Shell-Script

在 shell 腳本中“導出”一個變數

  • May 30, 2020

我們有兩個腳本,first.shsecond.sh. 我們使用( ) 命令執行first.shsecond.sh``.``source

我被這個腳本困住了,

first.sh

value="myvalue"
export value

oldvalue="othervalue"
export value

初始化值並導出後,我們初始化了 oldvalue 並再次導出value而不是oldvalue,但othervalue腳本中仍然可以使用second.sh,即使我們沒有導出oldvaluein first.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

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