![同じ結果を提供する条件が成功または失敗につながるのはなぜですか? [コピー]](https://linux33.com/image/159914/%E5%90%8C%E3%81%98%E7%B5%90%E6%9E%9C%E3%82%92%E6%8F%90%E4%BE%9B%E3%81%99%E3%82%8B%E6%9D%A1%E4%BB%B6%E3%81%8C%E6%88%90%E5%8A%9F%E3%81%BE%E3%81%9F%E3%81%AF%E5%A4%B1%E6%95%97%E3%81%AB%E3%81%A4%E3%81%AA%E3%81%8C%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F%20%5B%E3%82%B3%E3%83%94%E3%83%BC%5D.png)
というスクリプトがあります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を使用する必要があります==
。後者は標準ではなく、すべてのシェルで動作するわけではありません。