shell script -n演算子
最近仕事でシェルスクリプトを作成している。
これがナカナカややこしい特性をもっていたりする。
いや、それが便利な部分であったりもするから、目は瞑る。
にしても、今日ははまった!
変数に文字列が含まれているかを判定する演算子で-nというのがある。
if [ -n $hoge ];then
なんてするわけだ。
$hogeに「AAAA」なんて入っていればこのままでも使えるのだが、「あああ いいい」なんてなってるとそうも行かなくなる。
$hogeは、すぐに実際の文字列に置き換えられると考えればいい。
つまり
if [ -n あああ いいい ];then
となってしまうわけだ。
正解は
if [ -n "$hoge" ];then
というように、クォートしてあげればいい。
この感覚は、特殊な感じである。