2015-06-28 3 views
3

Есть ли способ избежать этого сообщения в команде следующим образом?Избегайте сообщения «сломанной трубы»

tac myfile | sed '/abc/q' 

Я понимаю, почему происходит сообщение: СЭД завершает работу, когда он находит «а» и нолики не имеет где-то отправить свои данные. Но я хотел бы сказать Башу: «Все в порядке, я ожидаю, что это произойдет».

+0

Перенаправление STDERR в devnull? – HuStmpHrrr

+0

@HuStmpHrrr хорошая идея, но я все еще хочу знать, есть ли другая ошибка. –

ответ

1

Отключение SIGPIPE должны это сделать:

trap -- '' PIPE 
+1

Не могли бы вы объяснить последствия этого? Это влияет на выполнение каким-либо образом или на эффективность? –

+1

@XuWang Вышеуказанное просто отключает сигнал, никаких других последствий нет. –

+0

OK спасибо. Таким образом, отключение сигнала означает, что bash никогда не получит сигнал и, таким образом, не сообщит об ошибке? На самом деле кто сообщает об ошибке в первую очередь, bash или команду 'tac'? –

Смежные вопросы