尝试使用另一个作为源运行的脚本的源运行bash脚本

时间:2014-04-07 18:40:12

标签: linux bash

我有一个bash脚本,最终会调用另一个bash脚本。每个脚本必须使用" source"运行。为简单起见,我总结了下面的问题点

script1.sh

source script2.sh

script2.sh

export someVar=something

使用以下命令运行所有内容:

source script1.sh arg1 arg2

问题是从 script1.sh 运行 script2.sh 时,参数也会被复制,所以 script2.sh 实际上是运行方式:

source script2.sh arg1 arg2

script2.sh 失败,因为提供了这些参数。有没有什么办法可以从script1运行script2而不传递那些 args ?不使用source命令运行script2不是一个选项,除非有另一种方法可以运行它并让变量保持不变。我也无法以任何方式修改script2。

1 个答案:

答案 0 :(得分:2)

完成后,您可以使用set --清除位置参数:

<强> script1.sh

echo "Number of parameters before: $#"
set --
echo "Number of parameters after : $#"
source script2.sh

<强> script2.sh

echo "script2.sh received $# parameters"

现在script1.sh foo bar将打印

Number of parameters before: 2
Number of parameters after : 0
script2.sh received 0 parameters