常に失敗して終了する標準コマンドはありますか?


42

失敗するコマンドでスクリプトをテストしたい。悪い引数を持つ既存のコマンドを使用できます。また、すぐに失敗して終了する簡単なスクリプトを書くこともできます。これらはどちらも簡単に実行でき、動作しますが、この目的のための標準コマンドがあれば、代わりにそれを使用したいと思います。


false、存在しないコマンドも含まれます。
クサラナンダ

回答:


51

あなたは使用することができますfalse/bin/false/usr/bin/false、またはシェルの組み込み):

$ false || echo It failed.
It failed.
$

exit 1サブシェルからも使用できます:

$ (exit 1) || echo Gosh, it failed too.
Gosh, it failed too.
$

さらに、1〜255の範囲内の任意の番号でexitを移植可能に呼び出すことができます。(ほとんどのシェルは、終了に指定された他の数値に255のモジュロ演算を適用するため、実際には、前述の範囲に強制されているだけで、他の数値を回避できます。負の値で呼び出された場合、構文エラー(まだ失敗ステータス)Unixライクなシステムは、0から255の範囲内の終了コードのみをサポートするため、指定された他の値の明確な動作に依存することはできませんすべてのシェルで終了します。)
mtraceur

1
また、ちょっとした雑学として、本当に古いシェルや不明瞭なシェルへの移植性が必要でない限り、それを行うこともできます! :(または通常成功を返す他のコマンド)。!次のコマンドの終了ステータスを無効にするように指示します。:常に成功して終了するnoop組み込みコマンドです。(!コマンドを否定する前と前に必ずスペースを入れてください。そうしないと、!文字で始まる1つのコマンドとして解析されます- bash対話モードのようなシェルの場合は、次のいずれかとして解析されますそれらの特別な履歴修飾子。)
mtraceur
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.