我通过source
命令调用脚本,并希望将参数传递给脚本。
我检查了man source
,bash返回:
:[参数] 没有效果;除扩展参数和执行任何指定的重定向之外,该命令不执行任何操作。返回零退出代码。
源文件名[参数] 在当前shell环境中从filename读取并执行命令,并返回从filename执行的最后一个命令的退出状态。如果filename不包含斜杠,则使用PATH中的文件名来查找包含filename的目录。在PATH中搜索的文件不需要是可执行的。当bash不处于posix模式时,如果在PATH中找不到文件,则搜索当前目录。如果关闭shopt内置命令的sourcepath选项,则不搜索PATH。如果提供了任何参数,则在执行文件名时它们将成为位置参数。否则,位置参数不变。返回状态是脚本中退出的最后一个命令的状态(如果没有执行命令,则为0),如果未找到或无法读取文件名,则返回false。
它没有例子,所以我不明白。
使用以下内容创建文件test.sh
:
echo "I was given $# argument(s):"
printf "%s\n" "$@"
然后从交互式shell会话中获取它:
$ source ./test.sh a 'b c'
I was given 2 argument(s):
a
b c
所以你可以像使用常规bash脚本一样访问参数,使用$@
或$1
,$2
,$3
等。
为了比较,将其作为常规脚本运行:
$ bash ./test.sh a 'b c'
I was given 2 argument(s):
a
b c