bash中不同脚本中的相同变量

时间:2014-02-13 10:32:03

标签: bash global-variables

在两个不同的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

3 个答案:

答案 0 :(得分:1)

您可以将脚本设为:

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 OR source ./set.sh在脚本中称为sourcing,它确保在不创建子shell的情况下执行set.sh,并且可以在该脚本中访问该脚本中设置的变量。其他脚本。

答案 1 :(得分:1)

您需要了解的是shell变量(或您正在使用的环境变量)的生命周期。

当您运行子shell时,您正在运行shell的子进程,并且您设置的任何shell变量都存在于脚本的生命周期中。任何环境变量(通过使用export将shell变量“提升”为环境变量)都会被复制到子进程的环境中 - 因此对子进程中的环境变量的更改不会影响到父母过程。

所以你需要使用的是source,它执行当前shell中脚本的内容(没有生成子shell)。总是source set.sh,你应该没问题

答案 2 :(得分:0)

您必须将该号码存储在一个文件中。

被调用的shell脚本无法更改调用shell的变量。


另一种方法是获取shell脚本,而不是将其作为单独的进程运行。

但也许你应该解释为什么你认为,你需要这个功能。也许一些完全不同的解决方案甚至更好。