q nを使用して終了ステータスnで終了することができますが、これを有効にするには、いくつかの分岐とフロー制御も使用する必要があります。
t
最後の入力行が読み取られてからコマンドが成功した
場合、s///
または別の条件付き分岐が行われた場合にのみ、条件付きで分岐します(つまり、ラベルにジャンプします)。
おそらく、標準の終了ステータス値の1つとは異なるnの値を選択するのが最善です。
ゼロの終了ステータスは成功を示し、ゼロ以外の値は失敗を示します。GNU 'sed'は、次の終了ステータスエラー値を返します。
0
Successful completion.
1
Invalid command, invalid syntax, invalid regular expression or a
GNU 'sed' extension command used with '--posix'.
2
One or more of the input file specified on the command line could
not be opened (e.g. if a file is not found, or read permission is
denied). Processing continued with other files.
4
An I/O error, or a serious processing error during runtime, GNU
'sed' aborted immediately.
だから例えば
$ echo "foo.bar" | sed 's/bar.*$//; t; q42' ; echo $?
foo.
0
一方
$ echo "foo.bar" | sed 's/baz.*$//; t; q42' ; echo $?
foo.bar
42
あなたはパターンスペースのデフォルトの印刷を省略する場合は、交換するq
ことにより、Q
(ノートQ
GNUの拡張です)。
sed
ほとんどの場合、終了ステータスがあることに注意してください。ここで必要なことは行われません。場合はsed
、コマンドが失敗したファイル上でそれを実行しようとした場合、たとえば、あなたは、書き込みにアクセスできるか、または存在しないものを持っていないsed
非0の終了ステータスで終了します。終了ステータスは、ユーザーが指示sed
しecho "foo.bar" | sed 's/pop.*$//'
たとおりに実行でき、正しく実行されたかどうかを示すだけです。ですべての行を削除しましたpop
。そのような行がなかったことは無関係です、コマンドはまだ機能しました。