在shell脚本中更改shell并执行命令

时间:2012-09-27 18:53:19

标签: linux shell

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

情况就像是脚本-A

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

我没有对脚本A的写入权限,并且它执行了许多我的脚本B所必需的配置。

我用

尝试了脚本-B
#!/bin/csh -f
./script-A
echo $A 

然而,由于shell已更改,我无法访问$ A.是否有一些工作,我可以做到这一点。

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

2 个答案:

答案 0 :(得分:0)

如果脚本A是csh脚本,那么

source script-A

即使脚本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

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

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

答案 1 :(得分:0)

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