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

Sub*_*ner 8 unix linux bash shell special-characters

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

例如,请考虑以下代码段

$JAVA_HOME/bin/java/com/test/Testclass $*
Run Code Online (Sandbox Code Playgroud)

Jin*_*Kim 8

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

$0= shell脚本的名称

$1= 第一个参数

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

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


Ign*_*ams 7

它表示传递给脚本或函数的所有参数,按字分割.

它通常是错误的,应该被替换为"$@",它正确地分隔了参数.

  • 那么,@ДМИТРИЙМАЛИКОВ(Dmitri?)已经解释了$*最初是如何构造成单个字符串的.这里重要的是它随后受到shell的正常分词,*除非引用它."$*"将确保参数仍然作为一个单个长字符串处理."$ @"强制将参数列表作为引用字符串数组处理.每个都有它的用途,重要的是要知道差异. (5认同)

ДМИ*_*КОВ 6

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

特殊参数

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

  • 从1开始扩展到位置参数.当扩展发生在双引号内时,它会扩展为单个单词,每个参数的值由IFS特殊变量的第一个字符分隔.也就是说,"$*"等价于 "$1c$2c...",变量c值的第一个字符在哪里 IFS.如果IFS未设置,则参数由空格分隔.如果IFS为null,则在不插入分隔符的情况下连接参数.