我有一个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。
答案 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