什么是Bash中相当于Batch的%*的等效命令?

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

调用 a.bat 1 2 3 4 的结果是:

1 2 3 4

如何在bash脚本中实现相同的功能?

3
你可以在bash中使用$*。如果你有这样的问题,那么你肯定会对如何编写bash脚本有其他问题。你应该阅读一些关于bash脚本编程的内容,如果你搜索"bash脚本编程",会有很多非常好的信息在线上。 - undefined
另一个很好的参考资料(顺便说一下,这是我最喜欢的)就是简单地使用man bash命令。 - undefined
1个回答

6

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

例如:a.sh

echo "$@"

运行 a.sh 1 2 3 4 将会得到:

1 2 3 4

a.sh的另一个示例:

printf "%s\n" "$@"

调用a.sh 1 '2 2' '3 3 3' '4 4 4 4'将返回:

1
2 2
3 3 3
4 4 4 4

相对于 a.sh

printf "%s\n" "$*"

这将打印:

1 2 2 3 3 3 4 4 4 4

2
只是为了指出:"$@"几乎总是你想要的;你很少想把参数当作一个以空格连接的字符串来处理。 - undefined
引号是至关重要的,否则你将得到非常不同的结果。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接