Как получить печатную информацию о команде в Shell Script - PullRequest
3 голосов
/ 03 сентября 2010

Я хотел бы извинить команду в сценарии оболочки.

Эта команда будет иметь код возврата, 0 или не 0 в случае успеха или нет.

В случае успеха он что-то напечатает.

Теперь мне нужны печатные материалы в сценарии оболочки. Как я могу это сделать?

Я знаю, что могу перенаправить в файл и затем прочитать файл. Есть ли способ перенаправить его непосредственно в переменную?

Большое спасибо за вашу информацию.

Ответы [ 2 ]

4 голосов
/ 03 сентября 2010

Вы можете использовать оператор $(...) для захвата вывода команды в виде строки. Возможно, вы также видели более старый синтаксис backtick `...`, который делает то же самое.

output=$(command)
output=`command`

echo "$output"

Подстановка команд

Подстановка команд позволяет выводу команды заменить имя команды. Есть две формы:

$(command)

или

`command`

Bash выполняет расширение, выполняя команду и заменяя подстановку команды стандартным выводом команды, при этом удаляются все завершающие символы новой строки. Внедренные новые строки не удаляются, но они могут быть удалены во время разделения слов. Подстановка команды $(cat file) может быть заменена эквивалентной, но более быстрой $(< file).

Когда используется форма замещения в старом стиле, обратный слеш сохраняет свое буквальное значение, за исключением случаев, когда за ним следуют $, ` или \. Первая обратная кавычка, которой не предшествует обратная косая черта, завершает подстановку команды. При использовании формы $(command) все символы в скобках составляют команду; никто не лечится специально.

Подстановки команд могут быть вложенными. Чтобы вкладывать при использовании формы с обратными кавычками, экранируйте внутренние кавычки с помощью обратной косой черты.

Если подстановка встречается в двойных кавычках, разделение слов и расширение имени пути не выполняются.

2 голосов
/ 03 сентября 2010
var=`command`

Обратные метки выполняют команду и возвращают результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...