if else質問がありますが、答えが正しいかどうかわかりません。 [コピー]

if else質問がありますが、答えが正しいかどうかわかりません。 [コピー]

私はこれをLinuxで実行しています:

$ number=4
$ test $number -eq 4
$ echo $?
0
$ test $number -lt 2
$ echo $?
1

結果(0と1)は正しいですか?

ベストアンサー1

Unixシステムでは、ユーティリティがエラーなしでスムーズで正常に実行されると、ユーティリティはゼロ終了ステータスを返します。ユーティリティが失敗した場合は、ゼロ以外の終了ステータスを返します。

これにより、シャットダウン状態で問題が発生したときにユーザーに通知できます(「終了値」または一部のマニュアルの同様のセクションを参照)rsync。簡単に言えば、ジョブが成功すると終了ステータスは0になり、ゼロでない場合は失敗し、終了ステータスは失敗の理由を示すことができます。

使用するユーティリティはtestこのパターンに従い、比較が成功すると( "true")、0を返します。比較(または実行するすべてのアクション)が失敗した場合(「false」)、ゼロ以外の終了ステータスを返します。

このifキーワードは、ユーティリティを使用して終了状態に応じて機能します。ユーティリティがゼロ終了ステータスを返す場合はデフォルトのブランチを使用し、それ以外の場合は次のブランチをelse使用します。

if test 4 -eq 3; then
    echo 4 is 3
else
    echo 4 is not 3
fi

ifすべてのユーティリティを使用できます。

if grep -q 'secret' file.txt; then
    echo file.txt contains secret
else
    echo file.txt does not contain secret
fi
if mkdir mydir; then
    echo created directory mydir
else
    echo failed to create directory mydir
fi

おすすめ記事