Есть две проблемы.
Первый - порядок, второй - / dev / tty
.
Давайте воспользуемся этим сценарием в качестве примера сценария, из которого мы хотим получить вывод:
test.sh
:
#!/bin/bash
echo dada
echo edada 1>&2
echo ttdada >/dev/tty
Теперь давайте посмотрим на вывод команд:
./ testmyscript.sh 2 > & 1> / dev / null
:
edada
ttdada
Поскольку порядок оценки - слева направо, мы сначала получаем «перенаправить stderr
туда, куда stdout
выводит (так , вывод консоли) ". Затем мы получаем «перенаправление stdout
на / dev / null
. В итоге мы получаем такую ситуацию:
stdout
-> / dev / null
stderr
-> console
Итак, мы все правильно поняли:
./ testmyscript.sh> / dev / null 2> & 1
И мы получаем:
ttdada
.
] Теперь мы выполняем «Перенаправить stdout
на / dev / null
», а затем «Перенаправить stderr туда, куда указывает stdout» (так, / dev / null
). Ура!
Однако у нас все еще есть проблема; программа печатает на / dev / tty
. Теперь я не знаю, как исправить такое поведение, поэтому вы, скорее всего, собираетесь требуется скрипт
, но, надеюсь, такое поведение будет происходить не слишком часто.