免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1978 | 回复: 7
打印 上一主题 下一主题

"$@"与$@,"$*"与$* [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-10-31 00:23 |只看该作者 |倒序浏览
  1. #! /bin/bash
  2. my_fun() {
  3.     echo $#
  4. }

  5. echo $(my_fun "$@")
  6. echo $(my_fun "$*")
复制代码


./my.sh p1 "p2 p3" p4
3
1

  1. #! /bin/bash
  2. my_fun() {
  3.     echo $#
  4. }

  5. echo $(my_fun $@)
  6. echo $(my_fun $*)
复制代码



./my.sh p1 "p2 p3" p4
4
4

仅仅的区别就是双引号,请问是为什么呢?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-10-31 00:49 |只看该作者

论坛徽章:
0
3 [报告]
发表于 2007-10-31 08:43 |只看该作者
顺路问下

) { :& }; :    解说一下....

论坛徽章:
0
4 [报告]
发表于 2007-10-31 15:50 |只看该作者

回复 #2 網中人 的帖子

我就是看13问看到这里不明白的。
又看了 一下,是不是这样的:因为$@和$*在没加引号的情况下是一样的 ,都是 表示全部参数(除$0).
所以当脚本中不加引号的时候,运行./my.sh p1 "p2 p3" p4的时候,两者是一样 的 ,都 被解释为:p1 p2 p3 p4.

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2007-10-31 16:04 |只看该作者
你在 my.sh 裡寫個 for 迴圈就明白了:

  1. echo '$*'
  2. for i in $*
  3. do
  4.     echo $i
  5. done

  6. echo '$@'
  7. for i in $@
  8. do
  9.     echo $i
  10. done

  11. echo '"$*"'
  12. for i in "$*"
  13. do
  14.     echo $i
  15. done

  16. echo '"$@"'
  17. for i in "$@"
  18. do
  19.     echo $i
  20. done
复制代码


然後跑: ./my.sh "a b" c

论坛徽章:
0
6 [报告]
发表于 2007-10-31 16:17 |只看该作者
原帖由 xiaozhu2007 于 2007-10-31 15:50 发表
我就是看13问看到这里不明白的。
又看了 一下,是不是这样的:因为$@和$*在没加引号的情况下是一样的 ,都是 表示全部参数(除$0).
所以当脚本中不加引号的时候,运行./my.sh p1 "p2 p3" p4的时候,两者是一样 ...

修改下脚本你就能明白了
#! /bin/bash
my_fun() {
while [ -n "$1" ]; do
        echo -e "$1\n"
        shift
done
echo -e "-----------"
}
    my_fun $@
    my_fun $*
    my_fun "$@"
    my_fun "$*"

论坛徽章:
0
7 [报告]
发表于 2007-10-31 16:17 |只看该作者
原帖由 網中人 于 2007-10-31 16:04 发表
你在 my.sh 裡寫個 for 迴圈就明白了:

echo '$*'
for i in $*
do
    echo $i
done

echo '$@'
for i in $@
do
    echo $i
done

echo '"$*"'
for i in "$*"
do
    echo $i
done

echo ...

........没注意到netman大哥已经写了

论坛徽章:
0
8 [报告]
发表于 2007-10-31 16:34 |只看该作者
谢谢两位的解答,明白了!!!呵呵
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP