$*
在shell脚本中的确切含义是什么?
例如,请考虑以下代码段
$JAVA_HOME/bin/java/com/test/Testclass $*
答案 0 :(得分:7)
它表示传递给脚本或函数的所有参数,按字词分割。
通常是错误的,应该用"$@"
替换,它会正确地分隔参数。
答案 1 :(得分:6)
您可以轻松找到自己的答案:man bash
→/\$\*
:
特殊参数
shell专门处理几个参数。这些参数只能被引用;不允许分配给他们。
- 从1开始扩展到位置参数。当扩展发生在双引号内时,它会扩展为单个单词,每个参数的值由
IFS
特殊变量的第一个字符分隔。也就是说,"$*"
相当于"$1c$2c..."
,其中c
是IFS
变量值的第一个字符。如果未设置IFS
,则参数以空格分隔。如果IFS
为null,则无需插入分隔符即可连接参数。
答案 2 :(得分:1)
$*
扩展为传递给该shell脚本的所有参数。
$0
= shell脚本的名称
$1
=第一个参数
$2
=第二个参数
...等
$#
=传递给shellscript的参数数量