使い慣れない言語でプログラムを組むと苦労しますね~


たまたま、シェルスクリプトを書くことになったのですが、grep の結果がなにも見つからなかったかどうかを判定するのにも一苦労でした(汗)


最初はこんな感じのコードを書いていました…



result=`grep " (xxx) " /proc/[0-9]*/stat`


if [ -n ${result} ]; then ← 空文字列かチェックしているつもり

<${result}を使って何かする…>

fi



[ -n ${result} ] は文字列の長さが0より大きいか判定しているつもりなのですが、実際に grep の結果がなにも見つからなかった場合、これだとうまくいきませんでした…(涙)


いろいろ、試行錯誤してたどりついたのは次のようなコードです。



if [ -n "${result}" ]; then

...

fi



${result}をダブルクォーテーションで囲むことでようやく空の文字列として認識してくれました。


ふ~ん…


そういうものなのか~


という感じですが、慣れない言語だと何に気をつけたらいいのか、こんなときどうすべきなのかとか、さっぱりわかりませんね(汗)


ま、わからないから慣れていないということなんですけど…


いくつかシェルスクリプトの初心者向けのサイトを見ましたが、さすがにこういうケースまでは書いてありませんでした(調べ方が足りないのかもしれませんが)。


シェルスクリプトを書く機会はあまりないので、さすがに本を買って勉強しようという気にはなりませんね。シェルスクリプトばっかり書くような仕事だったら話は別ですが…


(余談ですが、if文の終わりを fi で閉じるのはこれを作った人の気まぐれでしょうか? fi なんてふだん入力しないから、つい if と書いてしまうんですよね… なんで end とかにしなかったんだろ??)