私はこれを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