Bash导出脚本到另一个脚本

Bash export in a script; To next script?

本问题已经有最佳答案,请猛点这里访问。

我想在脚本中设置一个变量,并将其放在脚本外部用于下一个命令。

这就是我所拥有的:

1
2
3
4
5
6
7
8
9
10
11
#!/bin/bash

myExports="TEST='Value 1';export TEST;";

echo Before eval: $TEST
echo '***'

eval $myExports

echo After eval: $TEST
echo '***'

我这样称呼它:

1
./env1.sh ;echo Next command:$TEST

这是输出:

1
2
3
4
5
Before eval:
***
After eval: Value 1
***
Next command:


你可以用你的剧本像…

1
2
 #source ./env1.sh; echo Next command:$TEST
 . ./env1.sh; echo Next command:$TEST

正如@jonathon在评论中指出的那样,使用.代替source更为方便。

实际上,如果使用此方法,甚至不需要导出变量。

执行此操作时,请注意变量名。即使这是你想要的,你也在污染你的环境。

我不知道脚本的目的是什么,但如果可能的话,我倾向于避免使用eval。这个修改过的脚本将获得相同的结果,但同样,我不知道您要用它做什么。

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

#myExports="TEST='Value 1';export TEST;";

echo Before eval: $TEST
echo '***'

TEST='Value 1'; export TEST
#eval $myExports

echo After eval: $TEST
echo '***'