首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在shell脚本中获取上一个命令的输出

在shell脚本中获取上一个命令的输出
EN

Stack Overflow用户
提问于 2018-03-28 03:51:55
回答 2查看 1.9K关注 0票数 1

我有以下shell脚本:

代码语言:javascript
运行
复制
#!/usr/bin/env sh
./node_modules/.bin/nightwatch --env chrome --tag=enabled
exit 0

nightwatch命令总是返回exit code 1,与夜间手表测试是失败还是通过无关。因此,我想检查这个命令的控制台输出是否包含要处理的特定字符串(可能是failed),并使用shell脚本返回正确的退出代码。

我唯一的要求是,nightwatch命令输出在控制台上是可见的,因为由于调试原因,我们将需要它。

我想做这样的事情(伪代码):

代码语言:javascript
运行
复制
#!/usr/bin/env sh
./node_modules/.bin/nightwatch --env chrome --tag=enabled
if lastOutput.contains("failed"); then
  exit 1
else
  exit 0
fi
EN

回答 2

Stack Overflow用户

发布于 2018-03-28 03:58:09

由于您是在POSIX bourne shell sh上运行此命令,因此可以将命令输出与[操作符或case构造进行比较

代码语言:javascript
运行
复制
case "$(./node_modules/.bin/nightwatch --env chrome --tag=enabled)" in
  *failed*)  exit 1;;
   *) exit 0 ;;
esac

或者使用grep的返回代码,并在设置了-q标志的情况下要求其静默

代码语言:javascript
运行
复制
if ./node_modules/.bin/nightwatch --env chrome --tag=enabled | grep -q failed; then
    exit 1 
else
    exit 0
fi
票数 2
EN

Stack Overflow用户

发布于 2018-03-28 03:57:23

有很多更有效的方法可以做到这一点,但根据您的伪代码:

代码语言:javascript
运行
复制
#!/usr/bin/env sh
lastOutput=$(./node_modules/.bin/nightwatch --env chrome --tag=enabled)
if [[ $lastOutput = *"failed"* ]]; then
  exit 1
else
  exit 0
fi
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49521335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档