Bash

bash備忘録

More than 1 year has 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