14

$*在 shell 脚本中到底是什么意思?

例如考虑以下代码片段

$JAVA_HOME/bin/java/com/test/Testclass $*
4

3 回答 3

10

这意味着传递给脚本或函数的所有参数,按单词分割。

它通常是错误的,应该替换为"$@",它可以正确地分隔参数。

于 2012-09-13T20:00:23.620 回答
9

自己很容易找到答案:man bash/\$\*

特殊参数

shell 专门处理几个参数。这些参数只能被引用;不允许分配给他们。

  • 扩展到位置参数,从一个开始。当扩展出现在双引号内时,它会扩展为一个单词,每个参数的值由IFS特殊变量的第一个字符分隔。即,"$*"等价于 "$1c$2c...",其中 是变量c值的第一个字符。IFS如果IFS未设置,则参数以空格分隔。如果IFS为 null,则连接参数而不插入分隔符。
于 2012-09-13T20:00:22.613 回答
4

$*扩展为传递给该 shell 脚本的所有参数。

$0= shell 脚本的名称

$1= 第一个参数

$2=第二个参数...等

$#= 传递给 shellscript 的参数数量

于 2012-09-13T20:01:18.480 回答