Bash

程序替換中的變數範圍

  • February 14, 2016

我有一個帶有兩個參數的命令。假設我們想通過程序替換來創建兩個參數:

cat <(var=123; echo $var) <(echo $var)

必須做什麼才能使 $var 在第二次替換中可用?

問題是您只var在第一個子外殼中分配;第二個子shell 無權訪問其中分配的任何內容。要訪問兩者中的變數,您需要事先聲明它:

var=123
cat <(echo $var) <(echo $var)

如果您需要保留原始文件並跟踪更改它的內容:

var=123                               # set the default value
PARAM1=$(/bin/something; echo $var)   # something could edit var's value
PARAM2=$(/bin/otherthing; echo $var)  # so could otherthing
cat <(echo $PARAM1) <(echo $PARAM2)

引用自:https://unix.stackexchange.com/questions/261928