CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

bash里参数分割的问题(附送gmail:))

楼主wipall(太阳当空照)2004-09-03 13:47:23 在 Linux/Unix社区 / 程序开发区 提问

假设有如下两个bash脚本  
   
  ####   test.sh   ######  
  #!/bin/sh  
  SAVED_ARGS="$@"  
  ./sub_test.sh   $SAVED_ARGS  
   
  ####   sub_test.sh   #######  
  #!/bin/sh  
  while   [   $#   !=   0   ];   do  
          echo   $1;  
          shift;  
  done  
   
  如果执行脚本  
          ./test.sh   "a   b"  
  "a   b"   会被解释称两个参数传递给脚本sub_test.sh,   这样打印结果为:  
  a  
  b  
   
  如果不用IFS的话有什么办法可以使"a   b"当作一个参数传递给sub_test.sh,这样执行结果应该为:  
  a   b  
   
  (我有有限几个gmail   invitation,感兴趣的朋友可以留个mail)  
  问题点数:0、回复次数:10Top

1 楼laughable(Iv)回复于 2004-09-03 14:13:13 得分 0

./test.sh   "a   b"  
  是   a   b   啊Top

2 楼laughable(Iv)回复于 2004-09-03 14:14:04 得分 0

搞错了  
  我以为是  
  ./sub_test.sh   “a   b”Top

3 楼wipall(太阳当空照)回复于 2004-09-03 14:21:11 得分 0

呵呵,可以再想想   :)Top

4 楼laughable(Iv)回复于 2004-09-03 14:21:56 得分 0

####   test.sh   ######  
  #!/bin/sh  
  SAVED_ARGS="$@"  
  ./sub_test.sh   $SAVED_ARGS       ----->   ./sub_test.sh   "$SAVED_ARGS"  
   
  这样就可以了  
  Top

5 楼laughable(Iv)回复于 2004-09-03 14:27:26 得分 0

呵呵  
  原来是有奖竞答啊!Top

6 楼wipall(太阳当空照)回复于 2004-09-03 14:31:40 得分 0

这样的话所有从test.sh传递进来的参数都会被认做一个参数。  
  比如:./test.sh   a   "b   c"  
  根据你的方法,打印的会是:  
  a   b   c  
  但是我需要这种情况也能处理,应该作为两个参数传人sub_test.sh  
  理想的输出是:  
  a  
  b   c  
   
  有什么好主意吗?  
   
  Top

7 楼wipall(太阳当空照)回复于 2004-09-03 14:33:45 得分 0

呵呵,指gmail吗?  
  需要的话就留下email  
  有回答最好了,没有也无防。   :)Top

8 楼laughable(Iv)回复于 2004-09-03 17:04:51 得分 0

####   test.sh   ######  
  while   [   $#   !=   0   ]  
  do  
          ./sub_test.sh   "$1"  
          shift  
  done  
   
  这样好罗嗦啊,还不如直接./sub_test.sh   "a   b"   c  
  在找早资料Top

9 楼laughable(Iv)回复于 2004-09-03 17:09:00 得分 0

我的emall  
  laughable@163.comTop

10 楼see22(小海)回复于 2004-09-04 13:55:54 得分 0

####   test.sh   ######  
  #!/bin/sh  
  ##SAVED_ARGS="$@"   删掉这一行  
  ./sub_test.sh   "$@"  
   
  ####   sub_test.sh   #######  
  #!/bin/sh  
  while   [   $#   !=   0   ];   do  
  echo   $1;  
  shift;  
  done  
   
  这样就没有问题了Top

相关问题

  • 冒号: 不能用来分割成员初始化值和参数么???
  • 参数
  • 参数
  • 怎么分割?
  • 文件分割
  • 怎么分割?
  • 分割平面
  • 分割窗口
  • 求分割条
  • 内容分割

关键词

  • 脚本
  • a b
  • sh
  • 参数
  • sub
  • 传递
  • test
  • args
  • bin
  • saved

得分解答快速导航

  • 帖主:wipall

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo