我有两个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 命令,但没有任何效果。
答案 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