shell 中的$*和$@为什么是相同的
发表于 : 2011-04-04 11:31
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
这是为什么?
#!/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
这是为什么?