有什么更好的方法在两个不同的bash脚本中使用相同的变量?
简单的例子:
./set.sh 333
./get.sh
> 333
./set.sh 111
./get.sh
> 111
第一次如何初始化该变量?
上级:
$ 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
OR source ./set.sh
在脚本中称为 source,它确保在不创建子 shell 的情况下执行set.sh
,并且该脚本中设置的变量可以在其他脚本中访问。
了解的是 shell 变量(或正在使用的环境变量)的生存期。
运行子 shell 时,运行的是 shell 的子进程,并且您设置的任何 shell 变量在脚本的生存期内都存在。任何环境变量(通过使用 export
将 shell 变量"提升"为环境变量)都会复制到子进程的环境中 - 因此对子进程中环境变量的更改对父进程中的值没有影响。
所以你需要使用的是在当前 shell 中执行脚本内容的source
(不会生成子 shell)。总是source
set.sh
,你应该没事
您必须将该数字存储在文件中。
被调用的 shell 脚本无法更改调用 shell 的变量。
另一种方法是获取 shell 脚本,而不是将其作为单独的进程运行。
但也许你应该解释为什么你认为你需要这个功能。也许一些完全不同的解决方案甚至更好。