如何在没有命令行参数的情况下将参数传递给子shell(通过execute,NOT source)?

时间:2013-10-25 20:56:03

标签: shell parallel-processing subshell

例如,我有一个主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以获取另一个变量{{1 }}?

2 个答案:

答案 0 :(得分:3)

您只需导出变量a

即可
a=1
export a
./sub.sh

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

答案 1 :(得分:2)

你只需要一个额外的换行符:

#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的值。