我面临的情况是,我必须在脚本中执行只读脚本,该脚本会更改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然后执行所需的命令。但是,我必须自动完成整个过程。
答案 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
命令执行它。