|

楼主 |
发表于 2006-2-20 15:52:11
|
显示全部楼层
Post by yongjian
不是没人气的问题。shell版帖子的回复率是很高的。你的帖子我看了,自己也琢磨着这些问题。你的例子abs上有,我看过。但是当时没有过多注意,因为毕竟以那种形式出现的参数实例中并不多见。我个人理解是这样的。$@和$*对于参数的处理过程有可能是不一样的。$@和$*都会根据IFS来分离参数元,但当$@和$*赋值给另一个变量时,$@和$*所赋予的值不同,$@将参数赋予变量,参数之间仍是使用缺省的分隔符,而$*则是将参数和分隔符一起全部赋予给变量(我理解是将那串string)。也就是说无论IFS是什么,$@依IFS的定义将参数分隔,然后以以缺省的分隔符分隔他们,而$*不作这个动作,只是简单的标记分隔符的位置。所以在任何时候,你不会看见"$@"或$@中有你自定以的IFS标记,因为它已经处理完了。而"$*"则会。不知是否回答了你的问题。
多谢 yongjian 兄,
确实你的解答回答了我的问题,而且我一开始的思路和你是一样的,但是仍然有一点不是很明白.如果按照bash的命令解释原理,当bash替换了变量后,不是应该用IFS对其进行分割吗?那这样一来的话,命令不就变成了如下的模样了...
- IFS=:
- var=$@ # var=First Arg Second Third Arg Fifth Arg
复制代码
这样一来,不就应该出错了吗?是不是变量赋值与命令解释有不同之处?
也许是小弟本身的理解有误.还有abs是哪里啊?
刚刚涉及linux,所以不甚了解,希望yongjian兄不要嫌小弟麻烦,能为之解答一二. |
|