参考 http://shellscript.sunone.me/if_and_test.html
bash職人じゃなくてもたまには bash のワンライナーくらい書かなきゃいけないときってのがある。
デプロイ用に一行のコマンドを指定したい時、なんかはまさにそれだ。
composer のpostinstall とか npm run script とか…
bash で条件判定を組みたい時
bash で条件判定を組みたい時にはいくつかパターンが有る。
- if 文を使う
- test コマンドと
&&
を使う -
[ ]
記法と&&
を使う
1行で何かしらの処理を表現しようとする時、多分2番めや3番めの記法が一番綺麗で楽だったりする。
環境変数 $APP_DEBUG
を元に処理の切り分けを行いたいときなど以下のようにかける。
[ $APP_DEBUG ] && echo "this is debug mode!"
[ $APP_DEBUG ] || echo "this is production mode!"
単純に処理を実行させるだけならコレでも全然問題無いのだが、実際コレをCIのデプロイツールなどと組み合わせると、終了コードが1になるとかでビルドがコケるケールが出てくる。
こうした場合は、多少冗長でも if を使った記法を使うほうが良さそう。
if [ $APP_DEBUG ] ; then npm run build:dev ;fi
if [ ! $APP_DEBUG ] ; then npm run build:production; fi