在两个不同的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
答案 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脚本,而不是将其作为单独的进程运行。
但也许你应该解释为什么你认为,你需要这个功能。也许一些完全不同的解决方案甚至更好。