すごい広島 59 のメモ

sensu の実験をしていて実行する command に if を含むスクリプトをかいていたのだけど、ちょっとはまったのでメモしとく。

以下のようなスクリプトを1行で書きたいとする。

HTTP_STATUS=`curl -w '%{http_code}' -s http://blog.eiel.info/ -o /dev/null`
if [ $HTTP_STATUS -eq 200 ]
then
  echo -n $STATUS
else
  echo -n $STATUS; exit 1
fi

1行で書くとこうなる。

HTTP_STATUS=`curl -w '%{http_code}' -s http://blog.eiel.info/ -o /dev/null`; if [ $HTTP_STATUS -eq 200 ]; then echo -n $STATUS; else echo -n $STATUS; exit 1; fi

then と else のすぐ後ろにはセミコロンがあってはいけないらしい。

整理すると

if [test]; then command1; else command2; fi

簡単に確認したいなら以下のような感じかしら。

$ if [ 1 -eq 1 ]; then echo true; else echo false; fi
true
$ if [ 2 -eq 1 ]; then echo true; else echo false; fi
false