$ *在shell脚本中的含义是什么?

$*shell脚本中究竟意味着什么?

例如,考虑下面的代码片段

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

它意味着所有传递给脚本或函数的参数,按字分开。

这通常是错误的,应该用"$@"代替,它正确地分隔了参数。

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

特殊参数

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

  • 从一个开始扩展到位置参数。 当扩展出现在双引号内时,扩展为单个字,每个参数的值由IFS特殊变量的第一个字符分隔。 也就是说, "$*"相当于"$1c$2c..." ,其中cIFS变量值的第一个字符。 如果IFS未设置,则参数由空格分隔。 如果IFS为空,则参数在不插入分隔符的情况下进行连接。

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

$0 = shell脚本的名字

$1 =第一个参数

$2 =第二个参数…等等

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