两个shell脚本使用相同的变量

时间:2013-02-18 10:25:16

标签: linux bash shell

我有两个shell脚本test1.sh和test2.sh 在test1.sh我有以下声明:
test1.sh 中,我有一个变量 I ,其值将由 test2.sh

使用
#!/bin/sh
I="10"
echo $I

test2.sh 中,将复制并打印相同的变量值

#!/bin/sh
J=$I
echo $J

我需要在crontab中运行这两个脚本,我尝试了 export 命令,但没有任何效果。

3 个答案:

答案 0 :(得分:2)

将此内容添加到crontab:

. ./test1.sh && ./test2.sh;

并修改你的test1.sh:

#!/bin/sh
export I="10"
echo $I

使用.,第一个将作为源执行,并将保存变量。

答案 1 :(得分:1)

这两个脚本都在自己的shell中运行,并且只与其进程共享其环境。如果您希望两个单独的shell脚本共享环境变量,则必须在调用脚本之前在父进程中设置(和导出)变量。

您还可以创建仅设置变量的第三个脚本,并从两个主要脚本中获取该脚本。

答案 2 :(得分:0)

如果您想在脚本test1.sh中使用test2.sh的输出,则有两个选项

  • test1.sh的输出存储在一个文件中并在test2.sh
  • 中读回该文件
  • test1.sh
  • 致电test2.sh

test2.sh:

#!/bin/sh
J=$(test1.sh)
echo $J

正如@Joachim Pileborg已经建议的那样,你可以在一个脚本中设置(但不是回显)变量,并在另一个脚本中输入它

test1.sh

I="10"
J=20
K=30

test2.sh

source test1.sh
# do something with I, J, K