当前位置: 首页 > 知识库问答 >
问题:

在一行程序中使用bash测试失败的命令

陆昂然
2023-03-14

当我预计命令会失败时,我希望输出命令成功的文件的名称,同时抑制警告。我更喜欢一句俏皮话。

大致如下:

find xml/malformed-xml -type f -iname '*.xml' -exec if xmllint --noout --dtdvalid check-xml.dtd {} 2>/dev/null; then echo "Should have failed for {}"; fi \;

find xml/malformed-xml -type f -iname '*.xml' -print0 | xargs -0 -n 1 -i if xmllint --noout --dtdvalid check-xml.dtd {} 2>/dev/null ; then echo "Should have failed for {}"; fi

到目前为止,我没有得到太多的爱。建议?

共有3个答案

昌学
2023-03-14

尝试调用带有“-exec sh-c…”的子shell

find xml/malformed-xml -type f -iname '*.xml' -exec sh -c "if xmllint --noout --dtdvalid check-xml.dtd {} 2>/dev/null; then echo Should have failed for {}; fi" \;
慕容典
2023-03-14

我想这可能会帮助你:

Bash中有TRY-CATCH命令吗

用<代码> | | 和<代码>

杜经艺
2023-03-14

试试这个:

find xml/malformed-xml -type f -iname '*.xml' -exec xmllint --noout --dtdvalid check-xml.dtd  {} \; -print 2>/dev/null

解释:在search中,参数由-和隐式分隔。所以-exec…{}\;-print真的是-exec…{}\;-print。现在由于-和的短路逻辑,只有在第一个成功的情况下,第二部分才会执行。

你两个建议失败的原因是< code >如果...然后...其他...不是一个程序,它是一个bash内置程序,因此您不能从< code>find -exec或< code>xargs中调用它。这两个程序只能执行实际的程序。

 类似资料:
  • 问题内容: 自寻找以来已经有一段时间了,但找不到解决方案。我试图在.jar文件中的Linux上执行bash命令。为此,我尝试了很多事情,包括: 因此,当我单击.jar文件时,我希望程序打开bash并执行命令(java -jar …),以执行程序的另一部分。 关于如何做的任何想法? 问题答案: 要了解这一点,您首先需要了解如何在shell提示符下运行该命令。 请注意双引号在哪里。第一个参数是。第二个

  • 问题内容: 嗨,我正在开发一个需要我运行一些bash代码的应用程序,有没有一种方法可以将脚本硬编码到我的应用程序中然后运行它?例如(这是一个非常简化的示例) 我有以下方法来运行一行bash命令,但需要在多行中运行类似的内容。同样,上面的代码是一个非常简化的示例,我实际上在执行的操作必须通过脚本运行,而不能通过Java完成。我也想对它进行硬编码,因为我知道可以将脚本存储在手机上并使用以下命令运行它,

  • gradlew测试命令在CircleCI上失败。当我在本地执行相同的命令时,它工作正常,所有的测试用例都通过了。我附上yml文件,从CircleCI和我的测试类日志。 这是我的yml文件。 当我检查CircleCI的日志时,这些日志是: 执行转换IdtyTransform- com . mind valley . MVA . log in module . loginactivitytest co

  • 我按照cypress在他们的文档中推荐的方式编写测试,即每个测试有多个断言,但是用这种方式编写测试时会出现一个问题,那就是如果断言失败,测试执行就会停止。 我希望每个测试有多个断言,如果其中一个失败,测试将失败,但将继续测试执行,所以在最后,我将能够看到测试中失败的所有断言,而不仅仅是第一个失败的断言。 提前感谢!

  • 我们已经为spark编写了单元测试,在本地模式下有4个线程。 当一个接一个地启动时,例如通过intellij或sbt testOnly,每个测试都运行良好。 当用sbt测试启动时,它们会出现如下错误 我们使用的是一个带有多个子项目的sbt项目,其定义如下:

  • 测试解决方案有两个项目——一个测试项目带有测试方法(它继承自一个基类,该基类详细编写了测试步骤),另一个项目是一个类库项目,其中包含常用的方法和测试。 使用此解决方案来测试数据输入页。 问题 当我使用Selenium Grid并行执行测试时,所有测试都会失败——它会打开Chrome浏览器,然后什么都没有。 测试报告说服务器超时了。 当我按顺序运行测试时,它们都通过了(没有Selenium网格)。