shell脚本如何优雅的打印帮助信息

一个好的帮助信息对于快速、高效的使用shell脚本是非常有好处的。我们一般通过echo来逐行打印帮助信息,这种方式一个明显的缺点就是需要手动去进行排版,而排版的过程有时十分的繁琐。有没有想过,如果可以像写一般的注释一样来完成帮助信息的编写,那该多好啊!本文通过sed这个工具来实现,像写注释一样写shell的帮助信息。

shell中一般#开头的行为注释信息,所以利用这个特性,我们可以把帮助信息设计成如下的样式:

#!/usr/bin/env bash 

### ===================================================================
### my-script — does one thing well
###
### Usage:
###   my-script <input> <output>
###
### Options:
###   <input>   Input file to read.
###   <output>  Output file to write. Use '-' for stdout.
###   -h        Show this message.
### ===================================================================

然后,编写一个help函数完成帮助信息打印。

help() {
    sed -rn 's/^### ?//;T;p;' "$0"
}

这里用到了sed这个工具,sed是类Unix系统中十分强大的流编辑工具,关于sed的更多的使用方式,请man sed。关于help中的sed使用到的参数解释如下:

  • “$0”:表示脚本的文件名,例如,help.sh
  • -r:表示使用扩展的正则表达式
  • -n:表示打印sed匹配到的信息
  • s:使用sed的替换模式
  • ^### ?:表示匹配以###和若干个空格开头的字符串
  • //:用空字符替换之前匹配到的字符串
  • T:如果s///没有替换成功,跳转到sed-script的末尾
  • p:打印替换结果

编写help的调用逻辑,即直接调用脚本,或者使用-h选项。

if [[ $# == 0 ]] || [[ "$1" == "-h" ]]; then
	    help
	    exit 1
fi

使用效果:

$ ./help.sh 

my-script — does one thing well

Usage:
  my-script <input> <output>

Options:
  <input>   Input file to read.
  <output>  Output file to write. Use '-' for stdout.
  -h        Show this message.

————————————————
版权声明:本文为CSDN博主「奔跑的码仔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lhl_blog/article/details/107409694

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值