シェルスクリプトでの文字列比較

;; これはヨロシクない例
#!/bin/bash

arg=$1

if [ $arg = "hoge" ]; then
    echo $arg
fi

この場合、引数が指定されないと$argがNULLなので、こんなメッセージが出る。

unary operator expected

ので、""で囲む事によって比較する型が合わなくなる事を防ぐそうだ。

;; ""で変数を囲む事
#!/bin/bash

arg=$1

if [ "${arg}" = "hoge" ]; then
    echo $arg
fi

見事解決。
シェルスクリプトはファイル処理に強いらしい。そうなると文字列処理に強いと言われるPerlにも目が行くのが人の性(・x・ ).o0○