変数宣言方法
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