bash - bash 脚本中“无手动输入”的错误处理
问题描述
我刚开始学习 bash 脚本,我一直在尝试创建一个脚本,将每个手册页打印到 pdf 文件中。问题是我不知道如何处理“找不到手动输入”的错误,脚本只是为没有手动输入的命令创建一个空白文件。
#! /bin/bash
declare -a commands
commands=(pwd cd ls mkdir rmdir echo)
for i in "${commands[@]}"
do
man $i | pandoc --pdf-engine=pdfroff -o $i.pdf
done
在此先感谢,如果这是一个愚蠢的问题,我很抱歉。
解决方案
来自man man
:
EXIT STATUS
0 Successful program execution.
...
16 At least one of the pages/files/keywords didn't exist or wasn't matched.
检查man
退出状态。if
是检查命令退出状态的复合命令。赋值保留退出状态,可以同时赋值和查看。
if tmp=$(man "$i"); then
<<<"$tmp" pandoc ....
else
echo "Och nuuuu, there is no man page for $i" >&2
fi
用 shellcheck 检查你的脚本。
推荐阅读
- php - PHP 多维数组 - 提取孩子/父母
- sails.js - 尝试在 Sailsjs 应用程序中使用 Cloud 命令时出现参考错误
- java - 配置文件目标不匹配:/archetype-catalog.xml 在 Sonatype 中发布暂存存储库时
- python - NoSuchElementException Chrome v71 无头
- angular - Angular i18n 用于包含 routerLink 的文本并需要不同的字序
- asp.net-mvc-5 - 在 Asp.net MVC 5 中编辑加入表格时完成下拉列表
- angularjs - 表单不活动时的Angular JS表单验证
- sql - 为特定时间范围创建平均值
- c# - 我在哪里设置 Paypal 沙箱中的返回 URL
- android - 除非单击 Edittext 或将注意力集中在负载上,否则 RecyclerView 不会显示