linux 脚本 格式化,Formatting Long Lines 格式化多行字符的shell脚本
很久没更新了,很久没看脚本了
想想应该继续看脚本了
#14 Formatting Long Lines
#!/bin/sh
# A version of fmt, using nroff. Adds two useful flags: -w X for line width
# and -h to enable hyphenation for better fills.
while getopts "hw:" opt; do
case $opt in
h) hyph=1 ;;
w) width="$OPTARG" ;;
esac
done
shift $(($OPTIND - 1))
nroff << EOF
.ll ${width:-72}
.na
.hy ${hyph:-0}
.pl 1
$(cat "$@")
EOF
exit 0
上面脚本是用来格式化输出软件的
主要用到了 getopts 来获得处理参数
我们的命令行下的统一格式为 :
command -options parameters
getopts语句。该语句的格式为:
getopts option_string variable
其中option_string中包含一个有效的单字符选项。若getopts命令在命令行中发现了连字符,
那么它将用连字符后面的字符同option_string相比较。若有匹配,则把变量variable的值设为该选项。
若无匹配,则variable设为?。当getopts发现连字符后面没有字符,会返回一个非零的状态值。
Shell程序中可以利用getopts的返回值建立一个循环。
有时侯选项中还带一个值,getopts命令同样也支持这一功能。这时需要在option_string中选项字母后加一个冒号。当getopts命令发现冒号后,会从命令行该选项后读取该值。若该值存在,那么将被存在一个特殊的变量OPTARG中。如果该值不存在,getopts命令将在OPTARG中存放一个问号,并且在标准错误输出上显示一条消息。
------------
optstring option字符串,会逐个匹配
varname 每次匹配成功的选项
arg 参数列表,没写时它会取命令行参数列表
$OPTIND 特殊变量,option index,会逐个递增, 初始值为1
$OPTARG 特殊变量,option argument,不同情况下有不同的值
------------
shift 用于重新分配位置参数,其实就是把向参数左移动一个位置如:$1
------------
脚本解释
shift $(($OPTIND - 1)) 会使$@变为最后一个参数,即为文件名。
${width:-72},${hyph:-0} 用来定义默认值的。
nroff现在很少用了,查资料发现是用来将文本文件格式化为行式打印机或终端屏幕所需要的形式。
感觉这脚本的用处不是很大,linux有现成的命令可以来完成这个功能
他就是fmt。
linux 脚本 格式化,Formatting Long Lines 格式化多行字符的shell脚本相关推荐
- Linux下统计某个目录下所有源代码行数的Shell脚本
PS: 找到一个简单的方法: wc -l `find ./ -name "*.c"` wc -l `find ./ -name "*.h"` 其他语言也类似: ...
- Linux(12)-命令行的使用,shell脚本
命令行的使用,shell脚本 1.终端shell,man 2.shell 编程 2.1 shell脚本 2.2 注释 2.3 指明所用的shell 2.4 支持函数 2.5 使用变量 2.6 解析命令 ...
- Linux Shell脚本入门教程系列之(二)第一个shell脚本
本文是Linux Shell脚本系列教程的第(二)篇,更多shell教程请看:Linux Shell脚本系列教程 通过上一篇教程的学习,相信大家已经能够对shell建立起一个大体的印象了,接下来,我们 ...
- Linux系统防CC攻击自动拉黑IP增强版Shell脚本
Linux系统防CC攻击自动拉黑IP增强版Shell脚本 文章目录 一.Shell代码 二.执行脚本 三.效果测试 四.附加说明 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原 ...
- Linux系统防CC攻击自动拉黑IP增强版(Shell脚本)
这篇文章主要介绍了Linux系统防CC攻击自动拉黑IP增强版(Shell脚本),需要的朋友可以参考下 前天没事写了一个防CC攻击的Shell脚本,没想到这么快就要用上了,原因是因为360网站卫士的缓存 ...
- shell for循环命令行_24 道 shell 脚本面试题
想要成为中高级phper, shell 脚本是需要掌握的,它有助于你在工作环境中自动完成很多任务. 如下是一些面试过程中,经常会遇到的 shell 脚本面试问题及解答: Q:1 Shell脚本是什么. ...
- linux执行windows创建的脚本,如何在Windows 10上创建和运行Bash Shell脚本 | MOS86
随着Windows 10的到来您还可以将Bash命令合并到Windows批处理文件或PowerShell脚本中. 如果你知道你是什么Windows和UNIX使用不同的行尾字符,Windows文件系统可 ...
- 【Linux】30.ssh不用手动输入密码登录终端sshpass 和 shell脚本后跟参数自动匹配case的用法
ssh不用手动输入密码登录终端sshpass 和 case的组合用法 1.sshpass 的用法 在第一次手动输入密码ssh mdc@172.16.34.17 登陆上终端后,可以把下面两条语句做成sh ...
- linux shell命令分布执行,Linux学习笔记:bash特性之多命令执行,shell脚本
今天我们学习了bash特性多命令执行包括各个命令之间的逻辑关系.其中包含"与""或""非"命令的执行.下面即为我们所学习的这些逻辑命令关系之 ...
最新文章
- 说说设计模式~组合模式(Composite)
- .mb是什么文件_神经网络长什么样不知道? 这有一份简单的 pytorch可视化技巧(1)
- 分享30个新鲜PSD网站模板免费下载
- 【小技巧】【堆】【优先队列】优先队列初始化
- nginx https ssl 配置
- echarts java动态数据_[ASP.net教程]ECharts Java 动态加载数据,echartsjava
- Hexo搭建自己的专属博客,连接github数据仓库
- [Windows API] Listing the Files in a Directory,可用来数文件夹下有多少个子文件(夹)...
- delphi编写ocx控件步骤
- A* operator/(A*, A*)‘ must have an argument of class or enumerated type
- 快来领取哔哩哔哩412张超清壁纸!
- 电脑关机后电源灯还亮
- java-net-php-python-4java个人博客系统计算机毕业设计程序
- mac系统可以进行软件测试吗,iPhone和Mac如何加入Apple Beta版软件测试计划
- assign 组合逻辑和always@(*)组合逻辑的区别
- 火狐浏览器页面元素查看
- archery使用手册
- echarts折线风向图(附源码,可直接使用)
- 微信小程序加密消息解密工具类
- Fiddler抓包使用教程-安装配置