Shell特殊变量$*与$@的区别

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/asty9000/article/details/86681517

$*和$@是Shell的特殊变量,作用都是获取传递给脚本或函数的所有参数。在没有被双引号包围时,两者没有区别,都是将接受到的每个参数都是独立的,用空格分隔。也就是说下面两段代码是等效的。

for var in $@
do 
    echo ${var}
done
}

for var in $*
do 
    echo ${var}
done
}

当被双引号包围时,$@与没有被双引号包围时没有变化,每个参数依然是独立的。但是$*被双引号包围时,会将所有参数看作一个整体。下面两段代码的结果是不同的。

for var in "$@"
do 
    echo ${var}
done
}

for var in "$*"
do 
    echo ${var}
done
}

假设传递给脚本的参数是a b c,则前三段代码结果为:

a
b
c

第四段代码结果为:

a b c

猜你喜欢

转载自blog.csdn.net/asty9000/article/details/86681517