bash 相当于批处理'%* 的是什么

use*_*453 3 bash batch-file

如果我有一个批处理文件并且只想使用所有给定的脚本参数,我可以使用%*.

示例a.bat

echo %*
Run Code Online (Sandbox Code Playgroud)

调用a.bat 1 2 3 4给出:

1 2 3 4
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 bash 脚本中做同样的事情?

roo*_*oot 6

"$*"将返回一个字符串,其中所有参数均以空格分隔。 "$@"将返回 N 个字符串,每个参数一个。

例子a.sh

echo "$@"
Run Code Online (Sandbox Code Playgroud)

调用a.sh 1 2 3 4给出:

1 2 3 4
Run Code Online (Sandbox Code Playgroud)

另一个例子a.sh

printf "%s\n" "$@"
Run Code Online (Sandbox Code Playgroud)

调用a.sh 1 '2 2' '3 3 3' '4 4 4 4'给出:

1
2 2
3 3 3
4 4 4 4
Run Code Online (Sandbox Code Playgroud)

与以下情况相反a.sh

printf "%s\n" "$*"
Run Code Online (Sandbox Code Playgroud)

这将打印:

1 2 2 3 3 3 4 4 4 4
Run Code Online (Sandbox Code Playgroud)

  • 只是指出:`“$@”`几乎总是你想要的;您很少希望将参数视为单个空格连接的字符串。 (2认同)