Как контролировать буферизацию труб в сценариях bash?

Мне нужно, чтобы мой скрипт исполнялся с помощью stdbuf -i0 -o0 -e0 иначе пользователь будет задаваться вопросом, почему нет выхода (из-за буфера канала). Как я могу получить его?

 #!/usr/bin/stdbuf -i0 -o0 -e0 /bin/bash 

приводит к

 /usr/bin/stdbuf: invalid mode '0 -o0 -e0 /bin/bash' 

  • Есть ли принятое имя для ссылки на ~ / paths?
  • Переименуйте каталоги с "fname lname" на "lname, fname "
  • Как я могу запускать две команды параллельно и завершать их, если ОДИН из них завершается с кодом выхода 0?
  • Как я могу установить оболочку по умолчанию для запуска tmux
  • Запуск задания оболочки на удаленном сервере, закрытие терминала без закрытия задания
  • Получите внешний IP-адрес в оболочке без выкопания в 2016 году?
  • Сценарий оболочки для прокрутки через папку и файлы списка
  • Сохранить вывод -exec в текстовый файл
  • 2 Solutions collect form web for “Как контролировать буферизацию труб в сценариях bash?”

    Обычно нет необходимости отключать весь скрипт. Это необходимо только для определенных программ.

    Но если вы хотите сделать это так, вы можете просто вызвать скрипт из себя:

     #! /bin/bash if [ yes != "$STDBUF" ]; then STDBUF=yes /usr/bin/stdbuf -i0 -o0 -e0 "$0" exit $? fi 

    Появляется два субоптимальных решения:

    Субоптимально, по крайней мере, когда вы вводите команду в команду. В противном случае они могут быть оба в порядке. script записывает ваш вход и unbuffer просто не позволяет вам вводить правильно. YMMV

    Linux и Unix - лучшая ОС в мире.