というスクリプトがありますtemp.sh
。次のような他のスクリプトで実行しています。
sh temp.sh | tr '|' '\n' > sel-employee
count=`wc -l sel-employee`
if [ '$count' == 0 ] ; then
echo "ERROR"
else
echo "SUCCESS"
fi
このスクリプトを実行するときにsel-employeeファイルに0行以上の行がある場合、どちらの場合も出力は成功します。なぜそれが理解できないのですか?
答え1
if [ '$count' == 0 ] ; then
変数はcount
次の場所にあるため拡張されません。一つ引用符。二重引用符を使用する:"$count"
.stringは$count
stringと同じではないため、0
比較は常にfalseです。スクリプトを実行して、sh -x
シェルで実行されるコマンドを確認します。また、=
notを使用する必要があります==
。後者は標準ではなく、すべてのシェルで動作するわけではありません。