' P '

whatever I will forget

Shell BOOLでハマる

shellスクロプトでBOOL型変数でロジック分岐させてるとハマりました。

var=true
if $var; then
  #logic
else
  #logic
fi

上記のようにしたんですが。
なぜかifのtrueロジックにしか処理がいかない。。

解決策

明示的にfalseをセットしてあげる。

if [ -z $something ]; then
  var=true
else 
  var=false
fi

if $var; then
  #logic
else
  #logic
fi

注意

true または falseを変数にセットする際、変数頭に$は不要です。