同じ結果を提供する条件が成功または失敗につながるのはなぜですか? [コピー]

同じ結果を提供する条件が成功または失敗につながるのはなぜですか? [コピー]

というスクリプトがあります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は$countstringと同じではないため、0比較は常にfalseです。スクリプトを実行して、sh -xシェルで実行されるコマンドを確認します。また、=notを使用する必要があります==。後者は標準ではなく、すべてのシェルで動作するわけではありません。

関連情報