1

我面临这样一种情况,我必须从我的脚本中执行一个只读脚本,该脚本会更改 shell 并设置一些环境变量。现在我需要从我的脚本中访问这些环境变量。

情况就像脚本-A

#!/bin/csh -f
bash
#set some environment variables A,B,C

我没有对脚本-A 的写访问权,它执行了很多对我的脚本-B 来说是必需的配置。

我已经尝试了脚本-B

#!/bin/csh -f
./script-A
echo $A 

但是,由于外壳已更改,我无法访问 $A。是否有一些工作可以让我做到这一点。

理想情况下,我的脚本 B 中的命令必须在脚本 A 的新环境中运行。在手动交互时,这很好,因为我可以先执行脚本-A,然后执行所需的命令。但是,我必须自动化整个过程。

4

2 回答 2

0

用与您需要执行的相同的 shell 语言重写您自己的脚本,以便您可以使用 shell 的source命令执行它。

于 2013-06-19T22:10:01.680 回答
0

如果 script-A 是一个 csh 脚本,那么

source script-A

即使 script-A 包含退出语句​​,这也有效:

$ cat x.csh 
#!/bin/csh

source y.csh
echo $A - $B

cat y.csh 
#!/bin/csh

set A=10
set B=20
exit 1
set B=30

$ ./x.csh 
10 - 20

如果 script-A 在另一个 shell 中,则需要重写 script-B 以匹配该 shell

哦,顺便说一句,如果可能的话,DITCH CSH

于 2013-06-19T21:53:18.870 回答