如何将参数传递给source命令调用的脚本?

问题描述 投票:9回答:1

我通过source命令调用脚本,并希望将参数传递给脚本。

我检查了man source,bash返回:

:[参数] 没有效果;除扩展参数和执行任何指定的重定向之外,该命令不执行任何操作。返回零退出代码。

源文件名[参数] 在当前shell环境中从filename读取并执行命令,并返回从filename执行的最后一个命令的退出状态。如果filename不包含斜杠,则使用PATH中的文件名来查找包含filename的目录。在PATH中搜索的文件不需要是可执行的。当bash不处于posix模式时,如果在PATH中找不到文件,则搜索当前目录。如果关闭shopt内置命令的sourcepath选项,则不搜索PATH。如果提供了任何参数,则在执行文件名时它们将成为位置参数。否则,位置参数不变。返回状态是脚本中退出的最后一个命令的状态(如果没有执行命令,则为0),如果未找到或无法读取文件名,则返回false。

它没有例子,所以我不明白。

linux bash
1个回答
5
投票

使用以下内容创建文件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
© www.soinside.com 2019 - 2024. All rights reserved.