防止参数传播

时间:2014-05-07 09:00:53

标签: bash

当我在另一个脚本中调用脚本时,我给第一个脚本的参数会自动传播到第二个脚本。

a.sh:

echo "a running"
source b.sh blablabla
source b.sh

b.sh:

echo "b running"
echo $1

给出了:

$source a.sh hello
a running
b running
blablabla
b running
hello

编辑:

set ""
echo "a running"
source b.sh blablabla
source b.sh

可以是解决方案,因为set“”将第一个参数设置为空字符串

1 个答案:

答案 0 :(得分:4)

使用source时,正在读取和执行b.sh中的所有内容,就像它是a.sh的一部分一样 - 因此它可以访问传递给a.sh的位置参数。你想在这里完成什么 - 实际上是否有必要使用source?您可以通过运行脚本而不是源代码来避免此行为:

./b.sh

或者:

bash b.sh