免费注册 查看新帖 |

Chinaunix

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

[学习共享] shell脚本中如何实现Help功能? [复制链接]

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-12-08 13:58 |只看该作者 |倒序浏览
我想在执行a.sh时,可使用-h & --help的功能,如何编写?
例:
>a.sh -h
>显示帮助的信息。。。

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-12-17 06:20:00
2 [报告]
发表于 2015-12-08 14:03 |只看该作者
需要对输入参数做处理,例如
while [ $# -gt 0 ]; do   
    case $1 in   
      
        -h)   
              usage            
            shift 1
        。。。。

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
3 [报告]
发表于 2015-12-08 14:23 |只看该作者
回复 2# vagrant_1220


    不明白。  试了一下 好像不行

论坛徽章:
1
程序设计版块每日发帖之星
日期:2015-12-17 06:20:00
4 [报告]
发表于 2015-12-08 14:35 |只看该作者
给你的只是提示 ,这个可运行

#!/bin/bash



usage(){
    echo -e "Usage: $0 [OPTIONS]"

        echo -e " -H --help  display help info ."
exit 1
}



while [ $# -gt 0 ]; do
    case $1 in

        -h|--help)
            usage
            shift 1
            ;;




    esac
done

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
5 [报告]
发表于 2015-12-08 19:14 |只看该作者
回复 4# vagrant_1220


    shell了解有限,非常感谢您的回复。OK了

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
6 [报告]
发表于 2015-12-08 19:43 |只看该作者
回复 4# vagrant_1220


    有个问题,./a.sh -h的时候,他会执行并显示帮助信息,可否使用-h后只显示帮助信息并不执行此shell?我把你写的那一段放在我的shell最后了,不知是不是放的位置不对?

[root]# ./a.sh -h
..
...
....
.....
......
Installation is completed.
Usage: ./zz [OPTIONS]
-H --help  display help info .

论坛徽章:
6
羊年新春福章
日期:2015-03-03 17:16:28双子座
日期:2015-03-03 17:16:56巳蛇
日期:2015-03-03 17:17:2415-16赛季CBA联赛之福建
日期:2016-03-11 09:05:00黑曼巴
日期:2016-07-07 16:58:1215-16赛季CBA联赛之吉林
日期:2016-11-14 09:23:07
7 [报告]
发表于 2015-12-09 09:53 |只看该作者
  1. #!/bin/bash

  2. case $1 in
  3. -h)
  4.         echo 'hi,this is help...'
  5.         ;;
  6. esac
复制代码

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
8 [报告]
发表于 2015-12-09 09:59 |只看该作者
回复 7# jcdiy0601

谢谢你的回复

[root]# a.sh -h
-bash: a.sh: command not found


[root]# ./a.sh -h      
..
...
....
.....
......
Installation is completed.
hi,this is help...

但是他已经执行a.sh文件 了,我意思是a.sh -h或./a.sh -h只是看帮助信息,不需要执行文件 。要怎么写?

论坛徽章:
5
金牛座
日期:2015-07-03 13:32:00卯兔
日期:2015-07-03 13:32:17程序设计版块每日发帖之星
日期:2015-11-29 06:20:0015-16赛季CBA联赛之同曦
日期:2015-12-15 09:36:06CU十四周年纪念徽章
日期:2016-07-06 17:18:48
9 [报告]
发表于 2015-12-09 10:17 |只看该作者
楼上好几个人都回答的正确的。
但是需求有千万种,不太可能每一个需求都让别人全部一字不漏的写完,可以copy回去再修改修改。

楼主的“有个问题,./a.sh -h的时候,他会执行并显示帮助信息,可否使用-h后只显示帮助信息并不执行此shell?我把你写的那一段放在我的shell最后了,不知是不是放的位置不对?”

1.帮助-h要写在最前面。
2.执行完-h的操作后加一个exit直接退出

论坛徽章:
4
每日论坛发贴之星
日期:2015-12-02 06:20:00程序设计版块每日发帖之星
日期:2015-12-12 06:20:00程序设计版块每日发帖之星
日期:2015-12-15 06:20:00程序设计版块每日发帖之星
日期:2015-12-19 06:20:00
10 [报告]
发表于 2015-12-09 10:29 |只看该作者
回复 9# seanking1987


      我在试试,主要是我对shell不熟悉,只是日常工作中经常 会用到几个命令,所以写了一个,这不来这请教大神嘛。非常感谢你们耐心的回答!!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP