You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本处理man命令「无对应手册条目」报错的实现方法

解决方案

核心思路是先校验对应命令的man手册是否存在,再执行转换操作;同时增加转换失败后的异常文件清理逻辑,避免生成空白无效PDF。

修改后的完整代码

#!/bin/bash

declare -a commands
commands=(pwd cd ls mkdir rmdir echo)

for i in "${commands[@]}"
do
    # 先校验man手册是否存在,-w参数仅返回手册路径不输出内容
    if ! man -w "$i" > /dev/null 2>&1; then
        echo "警告:未找到命令 $i 的man手册,跳过转换"
        continue
    fi
    # 执行PDF转换
    man "$i" | pandoc --pdf-engine=pdfroff -o "$i".pdf
    # 校验转换结果,失败则清理无效文件
    if [ $? -ne 0 ]; then
        echo "警告:命令 $i 的man手册转换失败,已清理无效文件"
        [ -f "$i".pdf ] && rm "$i".pdf
    fi
done

关键改动说明

  • 新增man -w校验逻辑:man -w会返回对应命令man手册的存储路径,如果手册不存在,命令退出码为非0,此时直接跳过后续转换步骤,避免无内容输入到pandoc生成空白文件,输出全部重定向到/dev/null不会产生多余日志
  • 所有变量调用都增加了双引号包裹,避免命令名包含特殊字符或空格时执行异常
  • 新增pandoc转换后的退出码校验:如果转换过程出错(比如pandoc运行异常、依赖缺失),会自动删除生成的不完整PDF文件
  • 增加了运行提示,可直接定位哪些命令转换失败

内容的提问来源于stack exchange,提问作者Bishoy Adel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 05:45:06