免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 Shell $*和$@
12下一页
最近访问板块 发新帖
查看: 2514 | 回复: 11
打印 上一主题 下一主题

$*和$@ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-28 03:54 |只看该作者 |倒序浏览
看了几天$@和$*了,手册上讲$@和$*只是在加双引号的时候有区别,在不引用的时候是一样的,也看了瓦兄的分析http://bbs2.chinaunix.net/thread-705982-1-1.html
但是有一些例子似乎没解释通,R2007兄的例子
  1. r2007@www r2007 $ IFS=:
  2. r2007@www r2007 $ a[0]=123
  3. r2007@www r2007 $ a[1]=abc:xyz
  4. r2007@www r2007 $ a[2]=...
  5. r2007@www r2007 $ v1=${a[*]}  
  6. r2007@www r2007 $ v2="${a[*]}"
  7. r2007@www r2007 $ echo $v1
  8. 123 abc xyz ...
  9. r2007@www r2007 $ echo "$v1"
  10. 123 abc xyz ...
  11. r2007@www r2007 $ echo $v2
  12. 123 abc xyz ...
  13. r2007@www r2007 $ echo "$v2"
  14. 123:abc:xyz:...
  15. r2007@www r2007 $ unset IFS
  16. r2007@www r2007 $ echo $v1
  17. 123 abc xyz ...
  18. r2007@www r2007 $ echo $v2
  19. 123:abc:xyz:...
  20. r2007@www r2007 $
复制代码
johnny_jiang兄的例子
  1. x=('1 2' '3  4')
  2. y=${x[*]}
  3. z="${x[*]}"
  4. echo "$y"
  5. 1 2 3 4
  6. echo "$z"
  7. 1 2 3  4我接着瓦兄的分析继续猜测一下$*和$@表示的是位置参数,按照瓦兄的解释没有问题,但是当是普通数组的时候,就有问题了,比如上面两个例子,我猜测如下
  8. 普通数组的${a[*]}和    ${a[@]}和表示位置参数的$*和$@在赋值语句中是不太一样的,主要的区别就是${a[*]}在赋值给一个变量的时候也是进行分词的,这样的话,上面的例子也就可以解释了
复制代码

[ 本帖最后由 uselsee 于 2009-11-28 19:53 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2009-11-28 12:56 |只看该作者

回复 #1 uselsee 的帖子

你这个引用和原版不同。

论坛徽章:
0
3 [报告]
发表于 2009-11-28 13:25 |只看该作者
我复制过来的,但是不知道为什么${a\[*\]}这样的显示不出来,只能${a*}了

[ 本帖最后由 uselsee 于 2009-11-28 13:29 编辑 ]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
4 [报告]
发表于 2009-11-28 13:53 |只看该作者
数组两种形式
${array[@]}
${array[ * ]}

论坛徽章:
0
5 [报告]
发表于 2009-11-28 14:08 |只看该作者

回复 #3 uselsee 的帖子

本来是编辑,和楼下发重了

[ 本帖最后由 haimming 于 2009-11-28 16:28 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2009-11-28 14:10 |只看该作者

回复 #3 uselsee 的帖子

用[code /code]包起来

  1. ${a[*]}
复制代码

论坛徽章:
0
7 [报告]
发表于 2009-11-28 14:26 |只看该作者
我太笨了  code加来加去也调试不好

论坛徽章:
0
8 [报告]
发表于 2009-11-28 16:27 |只看该作者

回复 #7 uselsee 的帖子


+code- 代码内容+\cdoe-
以上部分:+表示[ ,-表示]

论坛徽章:
0
9 [报告]
发表于 2009-11-28 19:50 |只看该作者
谢谢楼上兄弟   终于弄好了
重新编辑了帖子   可以正常显示了

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
10 [报告]
发表于 2009-11-28 22:58 |只看该作者
LZ想清楚没有?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP