退出代码的脚本返回摘要

我使用这个命令来testing我的html页面的错误:

find . -iname '*html' -type f -print -exec /usr/local/bin/tidy -q -e {} \; 

如果有任何错误是由整洁创build的,我想要退出代码> 0。

find总是回报我0。

有没有什么办法从整齐的总和退出代码,并从查找或任何其他包装脚本返回?

尝试这个:

 #!/bin/bash NUM_FAILS=0 for FILE in $(find . -iname '*.html' -type f -print); do /usr/local/bin/tidy -q -e ${FILE} if [ $? -ne 0 ]; then ((NUM_FAILS++)) fi done if [ ${NUM_FAILS} -gt 0 ]; then echo -e "There were ${NUM_FAILS} failed files." exit 1 fi exit 0 

说明:您将需要循环find命令的结果,运行tidy ,然后在发现错误时递增计数器(我假设tidy在错误时会生成一个非零的返回码)。

一旦你遍历了这些文件,如果有任何错误,你可以exit 1 ,如果事情成功完成,显式exit 0总是一个好习惯。

你可以尝试这样的事情:

 find . -iname '*html' -type f \( -exec tidy -q -e {} \; -o -print \) 

这只会打印出一个错误代码退出的完整文件名。 您可以使用-fprint来收集文件中的文件名:

 find . -iname '*html' -type f \( -exec tidy -q -e {} \; -o -fprint files_with_errors \) 

这些构造利用了以下事实: -exec是一个布尔expression式,根据命令的成功返回true或false; -o标志是一个布尔OR ,所以它读取:

find匹配*html AND的所有条目,它们是文件AND(为此,tidy返回true或打印文件名)