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



有什么更好的方法在两个不同的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 脚本,而不是将其作为单独的进程运行。

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

相关内容

  • 没有找到相关文章

最新更新