1

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

./script.sh> results.txt

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

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

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

2 ответа2

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.

0

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

  • stdout с >
  • stderr с 2>

Смотрите больше здесь и здесь.

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

#!/bin/bash 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .