QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 984|回复: 1

$* 与 $@ 的区别

[复制链接]
发表于 2005-3-10 09:42:33 | 显示全部楼层 |阅读模式
为shell脚本指定的变元被存在两个特殊的变量$*和$@中。这两个变量之间的差别在于如何存储变元:$*不保存引用,而$@则保存。
   $*的行为有时候会产生一些问题,例如你的脚本aa中包含for循环操作有空格的文件名作为变元:
[code:1]$ aa "my shell 1.conf"[/code:1]
     使用$*代替$@将会产生一个问题,因为for循环将对文件my , shell, 1.conf执行三次,你所要求的文件 my shell 1.conf只需要一次。使用$@,就可以避免这个问题,因为每个变元都别当作引用而保存。
发表于 2005-3-10 15:43:50 | 显示全部楼层
这两个的区别可以这样认为:
$@ 和 $* 在不加引号使用的时候是一样的,但是如果加上引号,"$@" 还是被shell解释为单独的位置变量,而 "$*" 则被认为是一个变量,简单来说就可以认为 "$*" 是一个字符串。
在shell中也有数组的概念,类似上面的,也有 "$@" 和 "$*"。比如 ${array[@]} 和 ${array
  • }。它们的区别和上面的大致一样,具体的可以参考参考一些详细介绍shell编程的资料。
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    GMT+8, 2024-10-3 08:30 , Processed in 0.062367 second(s), 15 queries .

    © 2021 Powered by Discuz! X3.5.

    快速回复 返回顶部 返回列表