3

例如,我有一个主 shell 程序main.sh,我有另一个子 shell 程序sub.sh。我想将变量 var 传递给子 shell,但我不想使用命令行参数。示例代码如下:

#In main.sh
a=1
./sub.sh

#In sub.sh
echo $a

我想看看输出:1

我知道这个问题很奇怪,但这个功能最适合我的需要。我无法获取,sub.sh因为在实际程序中我有很多变量要传入......谢谢!

编辑:如果我sub.sh在后台运行并且需要 10 个小时,并且我想sub.sh在前台运行另一个变量来获取另一个变量b怎么办?

4

2 回答 2

3

你可以只导出变量a

a=1
export a
./sub.sh

这会导致a处于随后执行的命令的环境中

于 2013-10-25T21:05:18.543 回答
3

你只有一个额外的换行符:

#In main.sh
a=1 ./sub.sh

这实际上与 1_CR 的答案相同,但演示了将值传递给环境sub.sh而不是修改当前环境以sub.sh进行继承的技术。

由于这是对环境的按进程修改,因此您可以根据需要重复。

a=1 ./sub.sh &
a=3 b=9 ./sub.sh &

的每个实例sub.sh看到 的不同值a,第二个实例也看到 的值b

于 2013-10-25T21:07:44.130 回答