簡體   English   中英

bash中不同腳本中的相同變量

[英]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.shsource ./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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM