автоматически перенаправляет вывод на / dev / null

У меня есть простой скрипт с большим количеством выходных данных:

#!/bin/bash { apt-get update && apt-get upgrade } 2>&1 

Запуск его с ./script.sh >/dev/null 2>&1 заставляет его замолчать.

Могу ли я отключить скрипт изнутри?

2 Solutions collect form web for “автоматически перенаправляет вывод на / dev / null”

Вы можете добавить перенаправление в свой скрипт:

–EDIT– после комментария Джеффа Шаллера

 #!/bin/bash # case 1: if you want to hide all message even errors { apt-get update && apt-get upgrade } > /dev/null 2>&1 #!/bin/bash # case 2: if you want to hide all messages but errors { apt-get update && apt-get upgrade } > /dev/null 

Это то, для чего встроена команда exec bash (хотя она может выполнять и другие действия).

Выдержка из man bash на коробке CentOS 6.6:

  exec [-cl] [-a name] [command [arguments]] ... If command is not specified, any redirections take effect in the current shell, and the return status is 0. If there is a redirection error, the return status is 1. 

Итак, вы ищете exec >/dev/null 2>&1 . Вы можете использовать оболочку getopts чтобы отключить скрипт только в том случае, если была -q опция -q :

 #!/bin/bash getopts :q opt case $opt in q) exec >/dev/null 2>&1 ;; esac shift "$((OPTIND-1))" 

Вам не нужна оболочка getopts , но это может быть приятно. В любом случае, это намного чище, чем склеить весь ваш скрипт в фигурные скобки. Вы также можете использовать exec для добавления вывода в файл журнала:

 exec 2>>/var/myscript_errors.log exec >>/var/myscript_output.log 

Вы поняли эту идею. Очень удобный инструмент.

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