【发布时间】:2018-09-06 08:40:16
【问题描述】:
我有以下 shell 脚本:
#!/usr/bin/env sh
./node_modules/.bin/nightwatch --env chrome --tag=enabled
exit 0
nightwatch 命令总是返回exit code 1,无论夜间值守测试是失败还是通过都没关系。所以,我想检查这个命令的控制台输出是否包含一个特定的字符串(可能是failed)来处理它并使用shell脚本返回一个正确的退出代码。
我唯一的要求是,nightwatch 命令输出在控制台上是可见的,因为由于调试原因我们需要它。
我想做这样的事情(伪代码):
#!/usr/bin/env sh
./node_modules/.bin/nightwatch --env chrome --tag=enabled
if lastOutput.contains("failed"); then
exit 1
else
exit 0
fi
【问题讨论】:
-
使用 $?。这将返回最后一个命令退出代码。
-
您可以使用命令替换。
lastOutput=$(./node_modules/.bin/nightwatch --env chrome --tag=enabled)然后检查lastOutput为[[ $lastOutput = *failed* ]] && exit 1 || exit 0 -
但是 nightwatch 总是返回退出代码 1,这与 nightwatch 测试是否失败无关。所以,我必须解析 nightwatch 输出来决定我必须返回哪个退出代码。
-
@Martin 我会花一些时间弄清楚 为什么 它总是退出 1;这不(或不应该)正常。
-
没错。我知道,那是一个 nghtwatch 或一个硒虫。但起初我必须为我找到一个解决方法。我还为守夜人团队创建了一个错误问题。
标签: bash shell command-line command exit-code