shell命令末尾的“$ *”是什么意思

时间:2012-01-11 10:01:41

标签: linux shell

在示例shell脚本中,命令为 -

. <sourced_file.sh> $*

$*是什么意思? 感谢。

6 个答案:

答案 0 :(得分:10)

$*扩展到它出现的脚本的所有参数,或者扩展到当前shell函数(如果它出现在函数内)。

它通常是不正确的用法,因为它会将包含空格的参数分解为多个参数。更正确的是"$@",它保留了原始参数,即使它们中包含空格。

答案 1 :(得分:1)

$*是一个变量,包含从1开始的所有位置参数(当前shell脚本的参数)

man 1 bash

  

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

     

*

     

从一个开始扩展到位置参数。当。。。的时候   扩展发生在双引号内,它扩展为单个单词   每个参数的值由第一个字符分隔   IFS特殊变量。也就是说,“$ *”相当于“$ 1c $ 2c ......”,   其中c是IFS变量值的第一个字符。如果   IFS未设置,参数由空格分隔。如果IFS为null,   参数连接时没有插入分隔符。

     

@

     

从一个开始扩展到位置参数。当。。。的时候   扩展发生在双引号内,每个参数扩展为a   单词。也就是说,“$ @”相当于“$ 1”“$ 2”......如果是   双语扩张发生在一个词内,扩展了   第一个参数与原始的开头部分连接在一起   单词,并将最后一个参数的扩展与最后一个参数连接起来   原始单词的一部分。没有位置参数时   “$ @”和$ @扩展为空(即,它们被移除)。

通常你想使用"$@"

  

“$ *”相当于“$ 1 $ 2 ...”而   “$ @”相当于“$ 1”“$ 2”......

答案 2 :(得分:1)

$*是给当前脚本的所有参数的别名。

例如,如果您启动:

./test_script.sh arg1 arg2 arg3

如果您在test_script.sh中执行echo $*,则会显示:arg1 arg2 arg3

答案 3 :(得分:1)

Google bash $*为您提供 the advanced bash scripting guide,为您提供答案。您经常应该选择"$@"

答案 4 :(得分:0)

$ *是参数

因此,如果脚本“foo.sh”是

#!/bin/sh
gethostip $*

你打电话给foo.sh -d localhost

它与

相同
gethostip -d localhost

Minbd虽然,$ *对于有空格的参数不会很好。

答案 5 :(得分:0)

这是“所有论据”:

$ cat >test<<EOF
> echo \$*
> EOF
$ bash test foo bar
foo bar