CSH:
set a=0
echo "a is $a"
当我这样做./my_script.csh输出是:
a is
当我输出my_script.csh输出时是:
a is 0
为什么会如此。据我所知./ execution使用新shell。
答案 0 :(得分:3)
没错,。/ my_script.csh启动一个新shell,并使用#!您应该在文件的顶部选择要运行的shell(在这种情况下 应该是csh)。
source my_script.csh在当前shell中运行脚本。
如果脚本运行不正确,例如bash shell,设置a = 0不是在bash中设置环境变量的语法,因此代码将无法按预期工作,因为你正在使用错误的外壳。
看看#!在文件的顶部。这是对的吗?
答案 1 :(得分:1)
检查当前shell中是否设置了变量“a”:
set | grep '^a='
请记住,一旦您将脚本发送到当前的shell, 所有它的全局变量都存在,直到取消设置或退出当前shell。 您可能想要启动一个新的shell,获取脚本,结束退出shell以执行有效的测试。
我不知道您的问题的上下文,但您可能想要导出一些关键变量,以便在每个子流程中都有它们的副本。