Управление выводом в сценарии оболочки Linux

1

Когда я запускаю скрипт оболочки в bash, я помещаю все в файл следующим образом:

./script.sh & gt; results.txt

Некоторые команды в моем скрипте выводятся в терминал, а не в текстовый файл.

Например, строка cmd "ssh -V" выходы на терминал.

Что я могу сделать, чтобы получить результаты в файле results.txt?

Eigen
источник

Ответы:

2

Stderr не перенаправляется в файл. Скорее всего, вам нужно

./script.sh > results.txt 2>&1

перенаправить оба файла в файл results.txt. Обратите внимание, что

./script.sh 2>&1 >results.txt

это что-то другое, так как он перенаправляет стандартный вывод в файл, а stderr - в не перенаправленный стандартный вывод. И, конечно, вы можете заменить &1 для другого имени файла.

Если вы используете Bash, вам сойдет с рук

./script.sh &>results.txt

Не то чтобы во всех случаях переплетенные stdout / stderr не гарантировались в том же порядке, что и на консоли. Это будет работать для всего, не только для скриптов bash.

Torinthiel
источник
0

Убедитесь, что вы перенаправили все вывод в текстовый файл.

  • stdout с >
  • stderr с 2>

Узнать больше Вот а также Вот ,

Обратите внимание, что скрипт должен начинаться с:

#!/bin/bash 
Cornelius
источник