Я использую трубку из нескольких команд в bash. Есть ли способ конфигурирования bash для полного завершения всех команд во всем конвейере, если одна из команд не работает?
В моем случае первая команда, например command1
, запускается некоторое время, пока не произведет некоторый вывод. Например, вы можете заменить command1
на (sleep 5 && echo "Hello")
.
Теперь command1 | false
выполняет сбой через 5 секунд, но не сразу.
Такое поведение, похоже, связано с объемом вывода команды. Например, find / | false
немедленно возвращается.
В общем, мне интересно, почему bash ведет себя так. Может ли кто-нибудь представить какую-либо ситуацию, когда полезно, чтобы код типа command1 | non-existing-command
не выходил сразу?
PS: Использование временных файлов для меня не является вариантом, так как промежуточные результаты, которые я обрабатываю, являются большими, чтобы их можно было сохранить.
PPS: Ничто set -e
и set -o pipefail
не влияет на это явление.