未設定の変数が0と評価される理由を理解しようとしています。一部のスクリプトでは、変数の書き込みは、必要な場合にのみ設定されます。 。 このような振る舞いは正しくない出力になります。 私はすべての変数をプリセットする必要がありますか、または少なくともそれらが設定されていることを確認する必要がありますか? OKとステートメント
#!/bin/bash
#myvalue=0 #comment to simulate an unset variable.
if [[ $myvalue -eq 0 ]] ; then
echo "OK"
fi
結果:[[ ... ]]
内部
bash -x test.sh
+ [[ '' -eq 0 ]]
+ echo OK
OK
を試してください[if [$ myvalue -eq 0]; then' –
[]だけで-eqを使うことはできません。私は数字を評価する必要があるので使用します。 –
もちろん、 '-eq'を' [';実際に '[[... -eq ...]]'を使うべきかどうかは議論の余地があります。なぜなら、はるかに読みやすい '((... == ...))'を使うことができるからです。 – chepner