1
0

プロのシェルスクリプトの書き方(k)

Last updated at Posted at 2024-08-03

変数宣言方法

1 設定項目読み込み

[[ -r /etc/profile ]] && . /etc/profile

2 変数エクスポート

exportを付けている理由は子スクリプトでも使用できるように。

export SHELL_NAME=$(basename -- $0)
export SHELL_NAME2=$(basename $0)
export SHELL_ARGV="$@"
export SHELL_ARGV_NUM=$#
export SHELL_YMD=$(date +%Y%m%d)
export SHELL_PID=$$
export SHELL_BASE_PATH=$(cd $(dirname $0); pwd)
export SHELL_BIN_PATH=${SHELL_BASE_PATH}/bin
export SHELL_CONF_PATH=${SHELL_BASE_PATH}/conf

for i in ${SHELL_NAME} ${SHELL_NAME2} ${SHELL_ARGV} ${SHELL_ARGV_NUM} ${SHELL_YMD} ${SHELL_PID} ${SHELL_BASE_PATH} ${SHELL_BIN_PATH} ${SHELL_CONF_PATH}

do
     echo $i


done

3 ディレクトリ用変数 記載方法

export SHELL_BASE_PATH=$(cd $(dirname $0); pwd)
export SHELL_BIN_PATH=${SHELL_BASE_PATH}/bin
export SHELL_CONF_PATH=${SHELL_BASE_PATH}/conf

4 declare

export不要だったり
連想配列なんかもできて便利

declare -x 
declare -Ax ZZZZ

ZZZZ[TTT1]="123 456"
ZZZZ[TTT2]="789 aaa"

5 変数文字数抜き出し

if [[ "${HOSTNAME:0:6}" = "docker" ]]; then

echo "GOOD"

fi

6.ログ記録 ※デバッグにも使えます。

※少し上級者向けですね

function LOG_OUTPUT {

echo "$(date +'%Y%m%d %H:%M:%S') $@" | tee -a aaa.log

}

sh aaa.sh | while read line

do

        LOG_OUTPUT $line

done

aaa.sh

#!/bin/bash
echo "ZZZ"
echo "YYY"
echo "XXX"
echo "QQQ"
pwd
ps
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0