Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2079129
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2010-05-31 11:30:20

寂寞烈火:
这样比较一下
for i in $@;do echo $i;done
for i in "$@";do echo $i;done

黑哥:
$@经过参数展开后,还要word splitting,


"$@"经过参数展开后,不再word splitting.

对于"1 2" 4, $@参数展开后:"1 2", "4", word splitting后得到三个字(word): 1, 2,4

"$@"参数展开得到两个字:"1 2","4".

Springwind426:

不回引号时, $@ 和 $* 相同

加双引号时
参数: "1 2" 4
"$@"  表示所有的参数,即 "1 2" 4
"$*" 表示把所有的参数扩展并形成一个字符串 "1 2 4"

  1. set -- "1    2"  4
  2. 现在有两个参数: "1    2" 和 4
  3. for i in $@;do echo "[$i]";done
  4. [1]
  5. [2]
  6. [4]
  7. 空格没有了
  8. for i in $*;do echo "[$i]";done
  9. [1]
  10. [2]
  11. [4]
  12. 空格没有了
  13. for i in "$@";do echo "[$i]";done
  14. [1    2]
  15. [4]
  16. 完整的两个参数,与你先前输入的参数一样
  17. for i in "$*";do echo "[$i]";done
  18. [1    2 4]
  19. 就剩一个字符串了,但是,第一个参数的空格仍然是保留的。
阅读(747) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~