免费注册 查看新帖 |

Chinaunix

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

bash基础问题 $@ $*的区别。我有点混。希望有人解惑 [复制链接]

论坛徽章:
1
巨蟹座
日期:2013-12-30 17:06:34
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-27 17:39 |只看该作者 |倒序浏览
bash基础问题 $@ $*的区别。我有点混。希望有人解惑

论坛徽章:
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 [报告]
发表于 2008-11-27 17:40 |只看该作者

回复 #1 Darleter 的帖子

bash man里面说得很清楚

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
3 [报告]
发表于 2008-11-27 17:44 |只看该作者
原帖由 Darleter 于 2008-11-27 17:39 发表
bash基础问题 $@ $*的区别。我有点混。希望有人解惑


看十三问吧:
http://bbs.chinaunix.net/viewthr ... p;page=7#pid1628522

论坛徽章:
3
戌狗
日期:2014-09-10 17:07:162015年辞旧岁徽章
日期:2015-03-03 16:54:15wusuopu
日期:2016-06-17 17:43:45
4 [报告]
发表于 2008-11-27 17:48 |只看该作者

  1. $ cat bashvar.sh
  2. #!/bin/bash

  3. echo "----\$* ----"
  4. for i in "$*"; do
  5.   echo $i
  6. done

  7. echo "----\$@ ----"
  8. for i in "$@"; do
  9.     echo $i
  10. done
复制代码
$ ./bashvar.sh "1 2" 3 4 5
----$* ----
1 2 3 4 5
----$@ ----
1 2
3
4
5

论坛徽章:
1
巨蟹座
日期:2013-12-30 17:06:34
5 [报告]
发表于 2008-11-27 17:50 |只看该作者
原帖由 ynchnluiti 于 2008-11-27 17:48 发表

$ cat bashvar.sh
#!/bin/bash

echo "----\$* ----"
for i in "$*"; do
  echo $i
done

echo "----\$@ ----"
for i in "$@"; do
    echo $i
done



多谢。

论坛徽章:
0
6 [报告]
发表于 2008-11-27 17:50 |只看该作者
十三问吧。

论坛徽章:
0
7 [报告]
发表于 2008-11-27 21:52 |只看该作者
以前不知道有$@,看了本贴,做了个更详尽的测试:
$ cat t.sh
echo "$#:<$*>,<$@>"
echo "<$1>,<$2>,<$3>,<$4>"
for a in "$*"
do
echo "<+++$a+++>"
done

for a in "$@"
do
echo "<---$a--->"
done


$ bash t.sh "a b" c d
3:<a b c d>,<a b c d>
<a b>,<c>,<d>,<>
<+++a b c d+++>
<---a b--->
<---c--->
<---d--->
$ set "a b" c d
$ bash t.sh $*
4:<a b c d>,<a b c d>
<a>,<b>,<c>,<d>
<+++a b c d+++>
<---a--->
<---b--->
<---c--->
<---d--->
$ bash t.sh "$*"
1:<a b c d>,<a b c d>
<a b c d>,<>,<>,<>
<+++a b c d+++>
<---a b c d--->
$ bash t.sh $@
4:<a b c d>,<a b c d>
<a>,<b>,<c>,<d>
<+++a b c d+++>
<---a--->
<---b--->
<---c--->
<---d--->
$ bash t.sh "$@"
3:<a b c d>,<a b c d>
<a b>,<c>,<d>,<>
<+++a b c d+++>
<---a b--->
<---c--->
<---d--->

[ 本帖最后由 zhangshebao 于 2008-11-27 21:55 编辑 ]

论坛徽章:
20
CU大牛徽章
日期:2013-04-17 11:48:26羊年新春福章
日期:2015-03-10 22:39:202015年中国系统架构师大会
日期:2015-06-29 16:11:282015亚冠之平阳省
日期:2015-07-31 09:19:042015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-09-30 06:20:002015亚冠之柏太阳神
日期:2015-10-19 20:29:5915-16赛季CBA联赛之天津
日期:2016-11-29 14:03:4315-16赛季CBA联赛之北控
日期:2016-12-24 20:51:492015年辞旧岁徽章
日期:2015-03-03 16:54:15双鱼座
日期:2015-01-12 20:58:532014年中国系统架构师大会
日期:2014-10-14 15:59:00
8 [报告]
发表于 2008-11-27 23:15 |只看该作者
看十三问,定能解决

论坛徽章:
0
9 [报告]
发表于 2008-11-28 10:21 |只看该作者
原帖由 zhangshebao 于 2008-11-27 21:52 发表
以前不知道有$@,看了本贴,做了个更详尽的测试:
$ cat t.sh
echo "$#:,"
echo ",,,"
for a in "$*"
do
echo ""
done

for a in "$@"
do
echo ""
done


$ bash t.sh "a b" c d
3:,
,,,



...


不错。

论坛徽章:
1
丑牛
日期:2014-08-07 17:07:05
10 [报告]
发表于 2008-11-28 10:45 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP