分页: 1 / 1

shell 中的$*和$@为什么是相同的

发表于 : 2011-04-04 11:31
startfly
wyf@wyf-laptop:~/lab/wyf28$ cat test2
#!/bin/bash

count=1
for param in $*
do
echo '$*' Parameter '#'$count = $param
count=$[$count+1]
done

count=1
for param1 in $@
do
echo '$@' Parameter '#'$count = $param1
count=$[$count+1]
done
wyf@wyf-laptop:~/lab/wyf28$ ./test2 I have a question
$* Parameter #1 = I
$* Parameter #2 = have
$* Parameter #3 = a
$* Parameter #4 = question
$@ Parameter #1 = I
$@ Parameter #2 = have
$@ Parameter #3 = a
$@ Parameter #4 = question
这里$*没有把所有的参数当作一个参数,也允许对其中的值进行迭代
但是如果进行如下修改:for param in "$*"
则:
wyf@wyf-laptop:~/lab/wyf28$ ./test2 I have a question
$* Parameter #1 = I have a question
$@ Parameter #1 = I
$@ Parameter #2 = have
$@ Parameter #3 = a
$@ Parameter #4 = question
这是为什么?

Re: shell 中的$*和$@为什么是相同的

发表于 : 2011-04-04 11:57
灰色小狼
"$*"读取所有参数并返回一个字符串

Re: shell 中的$*和$@为什么是相同的

发表于 : 2011-04-05 7:51
tusooa
一般不用$*,在for里边,一般都是$@加上双引号。