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