您的位置:首页 > 运维架构 > Shell

一个脚本实例浅析shell脚本中$@与$*的区别

2014-07-24 14:55 239 查看
我们经常会在脚本中用到$@和$*这两个变量,但是可能许多人只是知道这两个变量存储的是所有的命令行参数,但是其具体差别并不一定知道。所以这里我用一个脚本实例来分析一下这两个变量的区别。
[root@www lianxi]# cat test.sh
#!/bin/bash
#Author: Helloween
#Description: hehe
echo "############"
echo '$@:'
for i in "$@"
do
echo $i
done
echo "############"
echo '$*:'
for i in "$*"
do
echo $i
done
echo "############"
echo '"1" "2" "3" "4" "5":'
for i in "1" "2" "3" "4" "5"
do
echo $i
done
echo "############"
echo '"1 2 3 4 5":'
for i in "1 2 3 4 5"
do
echo $i
done
echo "############"
[root@www lianxi]#

首先,这就是我要使用的脚本的内容。
现在,将脚本执行一下。

[root@www lianxi]# bash test.sh 1 2 3 4 5
############
$@:
1
2
3
4
5
############
$*:
1 2 3 4 5
############
"1" "2" "3" "4" "5":
1
2
3
4
5
############
"1 2 3 4 5":
1 2 3 4 5
############
[root@www lianxi]#

很容易看出第一个for循环和第三个循环、第二个for循环和第四个循环所输出的内容时一样的。其实$@与$*的区别就在循环列表中了。
$@:变量替换之后,会将所有命令行参数包含在分隔的文本值之中。比如:"1" "2" "3" "4" "5"。
$*:变量替换之后,会将所有的命令行参数包含在单个文本值之中。比如:"1 2 3 4 5"。

相信看到这里,大家也差不多能够理解这两个变量的区别了,希望这篇博客能帮助到大家。
以上纯属个人理解,如有不正之处,敬请指正。
本文出自 “Helloween” 博客,请务必保留此出处http://helloween.blog.51cto.com/6358580/1529678
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: