
Эта команда:
echo '18' | source meta-cmf-raspberrypi/setup-environment
Не устанавливайте переменные окружения, как это было сделано просто:
source meta-cmf-raspberrypi/setup-environment
С вводом "18".
Вопрос по ссылке:Переменные среды не устанавливаются при вызове моей функции в конвейере
Не решил мою проблему, потому что я пробовал:
echo '18' > >(source meta-cmf-raspberrypi/setup-environment)
Безуспешно. Как решить проблему?
решение1
В конвейере скрипт загружается в отдельную среду. Аналогично в примере подстановки процесса. Это означает, что переменные, заданные в скрипте, устанавливаются в дочерней среде для вызывающей оболочки. Изменения в дочерней среде никогда не могут распространяться в родительскую среду.
Эту проблему можно решить двумя способами, избежав размещения скрипта в отдельной среде.
Первый способ будет работать в оболочке, которая понимает «строки here»:
source meta-cmf-raspberrypi/setup-environment <<<18
Второй способ — использовать стандартный here-документ:
source meta-cmf-raspberrypi/setup-environment <<END_INPUT
18
END_INPUT
В обоих вариантах скрипт берется из текущей среды, а его входные данные перенаправляются из here-string/here-document.