Ви можете використовувати q n, щоб вийти зі статусом виходу n - але для того, щоб зробити це корисним, вам також потрібно буде використовувати деякі розгалуження та контроль потоку :
t
відгалуження умовно (тобто: перейти до мітки), лише якщо s///
команда успішна з моменту зчитування останнього рядка введення або взята інша умовна гілка.
Мабуть, найкраще вибрати значення для 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. Що таких рядків не було, не має значення, команда все-таки працювала.