免费注册 查看新帖 |

Chinaunix

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

请教关于getopts 如何将参数放在面 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-06-13 11:34 |只看该作者 |倒序浏览
while getopts ABC options
do
        case $options in
        A) echo $1;;
        B) echo $2;;
        C) echo $OPTARG;;
esac
done

如上面例子
./test 12 34 -ABC 56
结果要
12
34
56

但是-ABC放在$1 $2之后如何获取到呢?

论坛徽章:
0
2 [报告]
发表于 2011-06-13 21:59 |只看该作者
自顶

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
3 [报告]
发表于 2011-06-14 02:44 |只看该作者
回复 1# bjsfeng
  1. #!/bin/bash

  2. while getopts ABC: options
  3. do
  4.         case $options in
  5.         A) echo $4;;
  6.         B) echo $5;;
  7.         C) echo $OPTARG;;
  8. esac
  9. done
复制代码

  1. sh test.sh -AB -C 56 12 34
  2. 12
  3. 34
  4. 56
复制代码

论坛徽章:
0
4 [报告]
发表于 2011-06-14 03:27 |只看该作者
回复 1# bjsfeng


    如果12 34 一定要放在第一和第二位而且一定有的话,你看这样行不:
  1. [root@station3 ~]# cat p.sh
  2. #!/bin/bash
  3. arg1=$1
  4. arg2=$2
  5. shift 2
  6. while getopts ABC: options
  7. do
  8.   case $options in
  9.         A) echo "$arg1";;
  10.         B) echo "$arg2";;
  11.         C) echo "$OPTARG";;
  12. esac
  13. done
  14. [root@station3 ~]# ./p.sh 12 34 -ABC 56
  15. 12
  16. 34
  17. 56
  18. [root@station3 ~]#
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
5 [报告]
发表于 2011-06-14 03:39 |只看该作者
回复 4# lionfun


    shift 用的好,学习!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP