在linux上,c-shell是默认解释器......
我提供了一个我传递args的c-shell脚本。在该脚本中,我使用没有args的另一个c-shell脚本。但是我传递父脚本的args传递给了孩子。
问:为什么会这样?
问:如何防止将args传递给子脚本
简单的例子......
cat parent.csh
source ./child.csh
exit
cat child.csh
echo $arvv[*]
exit
会发生什么......
source ./parent.csh abc def
abc def
我不想把“abc”和“def”传给孩子。
答案 0 :(得分:0)
我想我找到了自己的答案。 (如果错误,请更正)
嵌套“sourcing”(上面示例中的父源代码)就像将源代码./child.csh替换为child.csh的内容(几乎就像“include”)所以如果您的示例代码是。 ..
echo "This is the parents code"
source ./child.csh
echo "Parent exiting"
exit
和...
echo "This is the child code"
echo $argv[*]
echo "Child exiting"
exit
它“真的”看起来像......
echo "This is the parents code"
echo "This is the child code"
echo $argv[*]
echo "Child exiting"
exit
echo "Parent exiting"
exit
传递给父级的args会暴露给子级,因为它位于同一范围内。这个解释有一个问题......为什么它在子代码中替换为“exit”时不会退出?
无论如何,如果我像这样给孩子打电话......
source child.csh ""
这似乎解决了这个问题。