shell中$*与$@的区别

$*
所有的位置参数,被作为一个单词.
注意:"$*"必须被""引用.
$@
与$*同义,但是每个参数都是一个独立的""引用字串,这就意味着参数被完整地传递,
并没有被解释和扩展.这也意味着,每个参数列表中的每个参数都被当成一个独立的
单词.
注意:"$@"必须被引用. $@ $* 只在被双引号包起来的时候才会有差异
双引号括起来的情况:
$*将所有的参数认为是一个字段
$@以IFS(默认为空格)来划分字段,如果空格在“”里面,不划分。

 

#!/bin/bash

for i in $*
do
    echo "Parameter is $i"
done

echo "==============================="

for i in "$*"
do
    echo "Parameter is $i"
done

echo "==============================="

for i in $@
do
    echo "Parameter is $i"
done

echo "==============================="

for i in "$@"
do
    echo "Parameter is $i"
done

运行结果如下:

spongewxy@spongewxy-Aspire-E1-571G:~/文档/Shell脚本编程诀窍/第三章-变量$ ./compare_var.sh one "two  three" four five
Parameter is one
Parameter is two
Parameter is three
Parameter is four
Parameter is five
===============================
Parameter is one two  three four five
===============================
Parameter is one
Parameter is two
Parameter is three
Parameter is four
Parameter is five
===============================
Parameter is one
Parameter is two  three
Parameter is four
Parameter is five

posted on 2015-01-21 11:44  sponge_wxy  阅读(75)  评论(0)    收藏  举报

导航