Shell-Script
在 shell 腳本中“導出”一個變數
我們有兩個腳本,
first.sh
和second.sh
. 我們使用( ) 命令執行first.sh
。second.sh``.``source
我被這個腳本困住了,
first.sh
value="myvalue" export value oldvalue="othervalue" export value
初始化值並導出後,我們初始化了 oldvalue 並再次導出
value
而不是oldvalue
,但othervalue
腳本中仍然可以使用second.sh
,即使我們沒有導出oldvalue
infirst.sh
。
如果您使用 採購第二個“腳本”
.
,則您正在同一腳本中執行第二個文件的內容,而不是執行單獨的腳本。例如,考慮這兩個腳本,其中一個執行另一個:
$ ls script1* script2* $ cat script1 #!/bin/bash export value="myvalue" oldvalue="othervalue" # Here script1 is running the second script (not sourcing it) ./script2 $ cat script2 #!/bin/bash echo "value: ${value}" echo "oldvalue: ${oldvalue}"
請注意,
script1
設置和導出value
和設置但不導出oldvalue
,然後script2
作為單獨的程序執行。script2
,反過來,嘗試列印這兩個值。這是輸出:$ ./script1 value: myvalue oldvalue:
如您所見,在這種情況下,您對這兩個變數的可見性的期望是正確的——因為
oldvalue
沒有從 導出script1
,所以它的值沒有在 中定義script2
。