文字列の比較
シェルスクリプトでは、クォーテーションは先に展開されてしまうため、空文字列や空白文字列が存在しなくなってしまう問題がある。
やりがちな間違い
code:compare_str_bad.sh
echo "true"
else
echo "false"
fi
code:console
$ ./compare_str_bad.sh "foo"
true
$ ./compare_str_bad.sh " foo "
true
$ ./compare_str_bad.sh ""
./compare_str_bad.sh: 3: [: =: unexpected operator
false
ダブルクォーテーションで括ると正しく判定されるようになる。
code:compare_str_ok.sh
echo "true"
else
echo "false"
fi
code:console
$ ./compare_str_ok.sh "foo"
true
$ ./compare_str_ok.sh " foo "
false
$ ./compare_str_ok.sh ""
false