我有一个bash脚本,最终会调用另一个bash脚本。 每个脚本必须以“源代码”运行。 为了简单起见,我总结了下面的问题点
script1.sh :
source script2.sh
script2.sh :
export someVar=something
运行一切:
source script1.sh arg1 arg2
问题是当script2.sh从script1.sh运行时,参数也被复制,所以script2.sh实际上运行如下:
source script2.sh arg1 arg2
script2.sh失败,因为提供了这些参数。 有没有什么办法可以从脚本1运行script2而不传递这些参数 ? 运行script2而不使用source命令不是一个选项,除非有另外一种方法让它运行并让variables保持。 我也无法以任何方式修改script2。
你可以使用set --
来清除位置参数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