我有以下shell脚本:
#!/usr/bin/env sh
./node_modules/.bin/nightwatch --env chrome --tag=enabled
exit 0nightwatch命令总是返回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发布于 2018-03-28 03:58:09
由于您是在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发布于 2018-03-28 03:57:23
有很多更有效的方法可以做到这一点,但根据您的伪代码:
#!/usr/bin/env sh
lastOutput=$(./node_modules/.bin/nightwatch --env chrome --tag=enabled)
if [[ $lastOutput = *"failed"* ]]; then
exit 1
else
exit 0
fihttps://stackoverflow.com/questions/49521335
复制相似问题