當透過函數的管道重定向回顯時,未設定環境變數

當透過函數的管道重定向回顯時,未設定環境變數

這個命令:

echo '18' | source meta-cmf-raspberrypi/setup-environment

不設定環境變量,而是簡單設定:

source meta-cmf-raspberrypi/setup-environment

輸入“18”。
連結中的問題:在管道中呼叫我的函數時未設定環境變數

沒有解決我的問題,因為我已經嘗試過:

echo '18' > >(source meta-cmf-raspberrypi/setup-environment)

沒有成功。我該如何解決這個問題?

答案1

在管道中,腳本是在單獨的環境中取得的。在流程替換範例中也是如此。這意味著腳本中設定的變數將在呼叫 shell 的子環境中設定。子環境中的變更永遠不會傳播到父環境。

您可以透過兩種方式解決此問題,避免在單獨的環境中取得腳本。

第一種方法可以在理解“h​​ere-strings”的 shell 中工作:

source meta-cmf-raspberrypi/setup-environment <<<18

第二種方法是使用標準的此處文件:

source meta-cmf-raspberrypi/setup-environment <<END_INPUT
18
END_INPUT

在這兩種變體中,腳本均源自當前環境,其輸入從此處字串/此處文件重定向。

相關內容