Edited at

bash備忘録

More than 3 years have passed since last update.


エラーしたら終了

戻り値に0以外が戻ったとき、そこで処理を終了し、以降を実行しない。

set -e


実行シェルのディレクトリに移動する

cd `dirname $0`

sh ./test.shはcd .

sh /home/user/test.shはcd /home/user

になる。


デバッグ

-xオプションで実行。

変数の値、評価式などが標準出力される。

sh -x ./test.sh


関数

呼び出し前に関数を書く。

引数は$で参照する。

log()

{
echo [`date`] $1 >> ./test.log
}

log "test start."


配列と繰り返し

配列はカッコで値を括る。

区切り文字は半角スペース。

arr=(1 2 3 4 5)

for val in ${arr[@]}
do
echo ${val}
done


現在年月日(yyyymmdd)の取得

バッチでよく使う。

ymd=`date +%Y%m%d`

echo ${ymd}


webサービスのヘルスチェック

httpの異常をwgetで検知する。

tomcatが稀に応答しなくなるシステムをcronで監視し、異常時にtomcatを再起動するようにした。

--delete-after:ファイルを作成しない

wget --delete-after [検査対象url]

if [ $? = 1 ]; then
# 異常時の処理
else
# 正常時の処理
fi