それは簡単な質問のようです、なぜグーグルは何も役に立たなかったのだろうか?StackOverflowでもチュートリアルでも。条件が偽であることをbashを使用して確認する必要があります。
私が見つけたものの私が試した
if ! [ 0==2 ]; then echo Hello; fi
そして
if [ ! 0==2 ]; then echo Hello; fi
それらのどれもHelloを出力しません。
似たような質問は2つしか見つかりませんでしたが、どちらの場合も最終回答は「false」条件を使用しないようにコードを再構築しました。
もしかして:
if ! [ 0 == 2 ]; then
echo Hello;
fi
等号演算子の周りにスペースがありません。
これは http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html -特にif then elseおよび演算子に関するセクションを読む時間です。私は通常、スクリプトを書いているときにこれを開いています。
数学的な評価には、bashで(( ))
を使用します。テキストには[[ ]]
を使用します。
if (( $i == 0 )); then
echo "i is 0"
else
echo "i is unequal 0"
test
コマンド([..]
)を使用している場合、整数の比較オプションを使用できます:-eq
、等しい、および-ne
、等しくない.
if [ 0 -eq 2 ]; then echo true ; else echo false ; fi # false
if [ 0 -eq 0 ]; then echo true ; else echo false ; fi # true
if [ 0 -ne 2 ]; then echo true ; else echo false ; fi # true
if [ 0 -ne 0 ]; then echo true ; else echo false ; fi # false
Bashでは、演算子[...]
は、ファイルタイプをチェックして値を比較するコマンドであるtest
と同等です。 testは内部コマンドです。type [
を使用してシェルに要求すると、[ is a built in Shell command
と応答します。通常、バイナリは/usr/bin/[
にもあります。
test EXPRESSION
またはman test
から読み取ることができるように、構文はinfo coreutils test invocation
です。
省略されたEXPRESSIONのデフォルトはfalseです。それ以外の場合、EXPRESSIONはtrueまたはfalseであり、終了ステータスを設定します。
これは、カムが少しよく理解するのに役立つという男からの抜粋です
(EXPRESSION) EXPRESSIONはtrueです。そのため、操作0==1
と見なすのは簡単にエラーになります。 (操作はスペースを含む0 == 1
、0==1
は式です)。
!EXPRESSION EXPRESSIONはfalseです。
info coreutils test invocation
から、テストの終了ステータスについて読むことができます。
終了ステータス:
0 if the expression is true,
1 if the expression is false,
2 if an error occurred.
Bashの数学的評価に加えて、if
の代わりにブール式を使用できます。
[max@localhost:~] $ (( 0 == 0 )) && echo True || echo False
True
[max@localhost:~] $ (( 0 != 0 )) && echo True || echo False
False