「もし!」とはどういう意味ですか?意味は?

「もし!」とはどういう意味ですか?意味は?

私は次のif / thenステートメントを見つけました。

if ! foo ; then
        echo "blah" 
        exit 1
fi

具体的にはどういう意味ですかif !? 「foo結果が正しくないとどうなりますか?」 「終了コードがfooゼロでなければどうなりますか?」

答え1

!コマンド終了状態の意味を逆にします。これは非POSIXシェル構文の一部ですifPOSIX仕様:

予約語なら!パイプラインの前でない終了状態は、パイプラインで指定された最後のコマンドの終了状態でなければなりません。それ以外の場合、終了ステータスは最後のコマンドの終了ステータスを論理的に否定する必要があります。つまり、最後のコマンドが0を返した場合は終了ステータスは1でなければならず、最後のコマンドが0より大きい値を返した場合は終了ステータスは0でなければなりません。

答え2

論理演算子と同等のブール演算子です。いいえ

バラよりman bash


    式が偽の場合、式は真です。

あなたの例ではfooechoそうでない場合blah

答え3

他の回答に追加するために、このコードは次のコードを書くのを!防ぐために使用されます。

if foo ; then
    # everything that used to follow "fi" in the previous version
else
    echo "blah" 
    exit 1
fi

存在する場合のみ有効はいfi空の句ifは無効なためです。 (コメントは含まれません。)

このように書くと、一度のインデントレベルが消費されます。これはハードコアです。構造化プログラミング人々はそれが支払う価値がある価格だと言うでしょう。ソフトウェア開発研究所(Software Development Institute)は、exitプログラムの中間部分がより良いものではなく、完全に悪いgoto endため、goto追加のネストレベルが改善と言います。

ある競合学校は「はい。画面の右側からすべてのコードを押し出すまでインデントするのは素晴らしいです」と言いました。

その後、両方の陣営には少し奇妙だと思う人がいて、可能な限り否定的なロジックを避けるのが最善です。

クールエイド(Kol-Aid)を選んで飲んでください。

関連情報