関数からの男の終了ステータスを使用する
man(1)のマニュアルページでは、次の終了ステータスコードが定義されています。
終了ステータス
0 Successful program execution.
1 Usage, syntax or configuration file error.
2 Operational error.
3 A child process returned a non-zero exit status.
16 At least one of the pages/files/keywords didn't exist or wasn't
matched.
つまり、man自体の終了ステータスを使用して、 manpathを介してページが使用可能かどうかを判別できます。例えば:
check_for_man_page () {
man "$1" > /dev/null 2>&1
}
この関数を使用すると、次のように終了ステータスのテスト条件を使用できます。
$ check_for_man_page "cat" && echo 'Found it!'
Found it!
$ check_for_man_page "quux" || echo 'Not found!'
Not found!
If/Elseステートメントの使用
これを行う別の方法は、if / elseステートメントを使用して、元のコードを実行するかどうかを決定することです。
if man "$1" > /dev/null 2>&1
then
man -t ${1} | ps2pdf14 - > "${1}_man.pdf"
else
echo "Missing man page: $1" >&2
fi