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" ]]; thenhelpexit 1
fi
使用效果:
$ ./help.sh my-script — does one thing wellUsage: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
shell脚本如何优雅的打印帮助信息相关推荐
- 如何在Shell脚本中漂亮地打印JSON?
是否有(Unix)Shell脚本以易于理解的格式格式化JSON? 基本上,我希望它可以转换以下内容: { "foo": "lorem", "bar&q ...
- shell看java控制台_java - 为什么我的shell脚本的输出不能打印在控制台? - SO中文参考 - www.soinside.com...
我试图用java在控制台打印一个shell脚本的输出.当我手动运行该脚本时,我得到C:/Users/user1/Desktop/shell.sh: line 78: /usr/ucb/ps: No s ...
- oracle同一个示例两个用户的数据同步_分享两个shell脚本--一键统计Oracle数据库用户信息...
概述 今天主要分享一下两个shell脚本,主要是为了查看所有数据库用户及其表空间,统计某个指定用户的明细,下面一起来看看吧~ 数据库连接脚本 use script settdb.sh for DB l ...
- shell脚本实现分日志级别输出
shell脚本如何优雅的记录日志信息,下面让我们一步一步,让shell脚本的日志也变得高端起来,实现如下功能 ①设定日志级别,实现可以输出不同级别的日志信息,方便调试 ②日志格式类似为:[日志级别] ...
- 【Shell系列】之shell脚本中常用句法
环境:shell脚本 1.怎么打印grep后的变量 方法1 gp=`grep smthg <filename>` echo -n "$gp" 参考网址:https:// ...
- bash 与 shell脚本编写指南
bash 与 shell脚本编写指南 bash 与 shell脚本编写指南 bash基本命令 man与info命令 遍历目录命令 文件与目录列表命令 处理文件相关命令 处理目录命令 查看文件内容 通过 ...
- Shell脚本加密方法大全及案例演示
一.加密原因 当我们正式线上开发环境是基于Linux开发时,通常必不可少的就是shell脚本的编写. shell脚本的好处众多,可对系统进行自动化维护,简单,快捷而且可移植性强. 存在问题: 但是sh ...
- Shell脚本开发实战--工具篇
一.产生背景 企业应用开发中,我们会经常和Linux服务器打交道,比如:Linux提交spark作业,查看作业日志,准备基础数据,调试与自测等:如果每次测试都重复那些操作就显得很业余了,我们想到的肯定 ...
- Linux系统shell脚本之打印系统的IP信息
Linux系统shell脚本基础之打印系统的IP信息 一.脚本要求 二.脚本内容 三.执行脚本 一.脚本要求 1.显示服务器的运行状态,并输出提示 2.输出电脑的IP地址等信息 3.将执行输出的信息记 ...
最新文章
- DataList分页
- 使用Devstack部署neutron网络节点
- lucene使用3.0.3_Jirasearch 2.0狗粮:使用Lucene查找我们的Jira问题
- Ripro主题X系列站长素材下载网站模板
- DHCP 不同情况的操作
- Python XML解析
- 山石网科发布山石云·景产品 安全运维管理进入SaaS模式
- APACHE配置文件中文版 httpd.conf FOR Apache 2.2.4
- 电磁兼容性(EMC)标准EN55032IT设备要求
- python 安居客 爬虫_Python爬虫安居客房价信息(并利用百度地图API查询坐标)
- linux用独显运行steam,linux N卡 steam启动失败解决方案 (32位 库缺失)
- android怎样换背景图片,手机怎么抠图换背景 安卓和iPhone一键抠图换背景教程
- JavaGuide--Java篇
- Davids阅读笔记:《如何阅读一本书》
- Word 重复引用同一个脚注
- android销毁指定activity,Android - 销毁指定Activity
- 手机计算机表白公式,表白公式数学公式
- 深度系统deepin
- Omap4470 USB驱动分析之注册过程
- C/C++编程:注入类名
热门文章
- Net学习日记_ASP.Net_MVC_新语法笔记
- 这两年多我写PHP业务代码的方式是如何进化的
- Python自动化之列表
- Java和C++在细节上的差异(转)
- Qt 字符串QString arg()用法总结
- asp.net利用RAR实现文件压缩解压缩(转)
- jQuery教程10-表单元素选择器
- 浅学习使用Ribbon 和 Feign的理解和使用
- 使用SpringMVC模拟文件上传与下载案例
- 在php中创建三个表格,创建新工作表PHPExcel