首页 > 解决方案 > 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

在此先感谢,如果这是一个愚蠢的问题,我很抱歉。

标签: bashshell

解决方案


来自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 检查你的脚本。


推荐阅读