захватить вывод из трубы и сохранить его в переменной - PullRequest
1 голос
/ 05 сентября 2011

Я пытаюсь захватить вывод из канала и сохранить его в переменной. Использование подоболочки, то есть var = $ (computeOutput), НЕ БУДЕТ РАБОТАТЬ, потому что сама функция computeOutput устанавливает другие переменные, которые должны храниться в той же области видимости, что и выходные данные. Если я использую подоболочку, другие переменные будут установлены в локальной копии подоболочки, но не в родительской оболочке.

Я подумал о следующем решении:

Учитывая функцию ...

function storeOutput () { вар = $ (кошка) }

... когда я делаю следующее ...

эхо "привет" | storeOutput; echo $ var

... "hello", значение var, выводится на консоль

Однако, когда я использую эту функцию внутри скрипта, вместо того, чтобы получить правильный результат, я получаю список содержимого текущего каталога. К сведению, я использую Mac OSX с установленными портами Mac.

Может кто-нибудь объяснить, почему это происходит ??? ИЛИ ЛУЧШЕ ЕЩЕ ПРЕДЛАГАЕТ ДРУГОЕ РЕШЕНИЕ

1 Ответ

1 голос
/ 05 сентября 2011

Проблема решена: в скрипте я передавал многострочный вывод в функцию storeOutput.Когда я печатал значение var, я забыл заключить его в двойные кавычки, то есть «$ var», поэтому предположим, что он рассматривал часть вывода как команду, например ls

Кроме функции storeOutput (){var = $ (cat)}, кажется, работает

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