[英]same variable in different scripts in bash
在兩個不同的bash腳本中使用相同變量的更好的方法是什么?
簡單的例子:
./set.sh 333
./get.sh
> 333
./set.sh 111
./get.sh
> 111
以及如何第一次初始化該變量?
UPD:
$ cat get.sh
echo "$var"
$ cat set.sh
export var="$1"
$ chmod +x set.sh get.sh
$ source set.sh
$ ./set.sh u
$./get.sh
$ source ./set.sh 2
$ ./get.sh
2
您可以將腳本設置為:
cat set.sh
export var="$1"
cat get.sh
echo "$var"
chmod +x set.sh get.sh
然后給他們打電話:
. ./set.sh 333
./get.sh
333
請注意. ./set.sh
. ./set.sh
或source ./set.sh
在腳本中稱為“源”,它確保執行set.sh
而不創建子外殼,並且可以在其他腳本中訪問該腳本中設置的變量。
您需要了解的是Shell變量(或您正在使用的環境變量)的生命周期。
運行子Shell時,您正在運行該Shell的子進程,並且在腳本的生存期內,您設置的任何Shell變量都會存在。 任何環境變量(通過使用export
shell變量“提升”為環境變量)都復制到子進程的環境中-因此,子進程中對環境變量的更改不會影響父進程中的值。
因此,您需要使用的是source
,它可以在當前外殼程序中執行腳本的內容(不會生成任何子外殼程序)。 總是source
set.sh
,你應該沒問題
您必須將該號碼存儲在文件中。
被調用的shell腳本無法更改調用shell的變量。
另一種方法是獲取shell腳本,而不是將其作為單獨的進程運行。
但是也許您應該解釋為什么您認為自己需要該功能。 也許完全不同的解決方案更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.