例如,我有一个主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 }}?
答案 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
的值。