AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 531234
Accepted
Korjavin Ivan
Korjavin Ivan
Asked: 2013-08-16 05:33:47 +0800 CST2013-08-16 05:33:47 +0800 CST 2013-08-16 05:33:47 +0800 CST

退出代码的脚本返回摘要

  • 772

我使用这个命令来测试我的 html 页面是否有错误:

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

如果 tidy 发现任何错误,我想获得退出代码 > 0。

find 总是返回我 0。

有没有办法从 tidy 总结退出代码,并从 find 或任何其他包装脚本返回它?

command-line-interface
  • 2 2 个回答
  • 59 Views

2 个回答

  • Voted
  1. larsks
    2013-08-16T06:06:15+08:002013-08-16T06:06:15+08:00

    你可以尝试这样的事情:

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

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

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

    这些构造利用-exec了布尔表达式这一事实,该表达式根据命令的成功返回真或假;该-o标志是一个 boolean OR,因此内容如下:

    查找与*htmlAND 匹配的所有条目,这些条目是文件 AND(tidy 返回 true 或打印文件名)

    • 4
  2. Best Answer
    Craig Watson
    2013-08-16T06:01:38+08:002013-08-16T06:01:38+08:00

    尝试这个:

    #!/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命令的结果, run tidy,然后在发现错误时增加一个计数器(我假设tidy会在错误时生成一个非零返回码)。

    一旦你遍历了文件,如果有任何错误,你可以exit 1,并且明确地表明exit 0事情是否成功完成总是一个好习惯。

    • 2

相关问题

  • 不会将整个 XML 文件读入内存的命令行 XML 验证器?

  • 在命令行上从 csv 文件中过滤带有空格字符的字段

  • 如何通过 SVN 命令行接受 SSL 证书?

  • 如何在 Linux 中删除名称中带有选项字符的文件?

  • 使用命令行工具按排序顺序计算重复项

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve