$*在 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 的参数数量