我有以下脚本~/bin/cat
,pygmentize
如果不只是常规的 old ,则尽可能显示语法高亮文件cat
。
#!/bin/bash
for var; do
pygmentize "$var" 2> /dev/null
if [ $? -ne 0 ]; then
/bin/cat "$var"
fi
done
这在我的工作机器上运行良好,但在我的家用机器上却不行。在家里,如果pygmentize
无法识别文件,它会显示相同的错误消息,但退出状态为 0,而在工作时它返回 1,这会破坏脚本。唯一的区别是我在工作中运行 Fedora 和在家里运行 Ubuntu。
$ pygmentize testfile
Error: no lexer for filename 'testfile' found
$ echo $?
0
$ file testfile
file: ASCII text
这很奇怪,因为两者都是相同的版本
$ pygmentize -V
Pygments version 1.4, (c) 2006-2008 by Georg Brandl.
我可以进去,grep
但是如何在不扔掉的情况下做到这一点,我应该如何处理?Error
stderr
stdout