bashで2つの整数を比較する場合、二重引用符を付ける必要がありますか?公式文書で http://tldp.org/LDP/abs/html/comparison-ops.html 毎回二重引用符が表示されるはずだと読むことができます...しかし、の違いは何ですか次の例:
[ "$VAR" -eq "1" ]
[ $VAR -eq "1" ]
[ "$VAR" -eq 1 ]
[ $VAR -eq 1 ]
興味があるので、/ etc /init.dにあるUbuntuinitスクリプトを見てみました。少なくとも["$ VAR" -eq "1"]と[$ VAR -eq]には、算術比較の多くの使用法があります。 1]が使用されています...しかし、それを行う公式の方法が何であるかを実際に「知っている」人はいないようです。
ありがとう!
$VAR
が空または未設定である可能性がある場合は、引用符で囲む必要があります(したがって、おそらく常に引用符で囲む必要があります)。
引用せずに空の場合、ステートメントの結果は次のようになります。
[ -eq 1 ]
これは構文エラーです。ただし、1
を引用しても何も得られません。
( bash条件式 ([[ ... ]]
のあるもの)も見てください。これは、癖の少ない、より「モダンな」バージョンのテストコマンドです。)
算術比較が必要な場合は、算術条件付き構文を使用します(文書化 ここ ):
(( VAR == 1 ))