我有以下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
答案 0 :(得分:2)
由于您在POSIX bourne shell sh
上运行此命令,因此您可以将命令输出与[
运算符或case
构造
case "$(./node_modules/.bin/nightwatch --env chrome --tag=enabled)" in
*failed*) exit 1;;
*) exit 0 ;;
esac
或使用grep
的返回码并要求它在设置-q
标志时保持沉默
if ./node_modules/.bin/nightwatch --env chrome --tag=enabled | grep -q failed; then
exit 1
else
exit 0
fi
答案 1 :(得分:0)
有很多更有效的方法可以解决这个问题,但根据你的假代码:
#!/usr/bin/env sh
lastOutput=$(./node_modules/.bin/nightwatch --env chrome --tag=enabled)
if [[ $lastOutput = *"failed"* ]]; then
exit 1
else
exit 0
fi