首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析Bash脚本中的命令响应

解析Bash脚本中的命令响应
EN

Server Fault用户
提问于 2020-06-29 17:23:37
回答 1查看 245关注 0票数 0

我需要一个bash脚本,它接受shell命令的输出并解析输出以提取状态。如果国家是:坏的,应该发送电子邮件。

代码语言:javascript
复制
~$ bucardo status
PID of Bucardo MCP: 2074
 Name     State       Last good               Time           Last I/D    Last bad                Time         
============================================+========+=======================+==============+===========+=======================+==============
 zenith | Good   | Jun 28, 2020 08:37:45 | 31h 13m 14s  | 1/1       | Jun 22, 2020 12:28:34 | 171h 22m 25s 
 zenith | Good   | Jun 23, 2020 19:12:42 | 140h 38m 17s | 4/4       | none                  |  

我还没能把Regex弄对

代码语言:javascript
复制
#!/usr/bin/env bash

bucardo status

while read line; do
  if [[ ! ${line} =~ ^[\+\| ]]; then
    if [[ ${line} =~ \|[[:space:]]*([[:alpha:]]+)[[:space:]]*\ ]]; then
      state="${BASH_REMATCH[1]}"
      echo "${state}"
    fi
  fi
done
EN

回答 1

Server Fault用户

发布于 2021-03-03 09:44:57

代码语言:javascript
复制
if [[ ${line} =~ \|[[:space:]]*([[:alpha:]]+)[[:space:]]*\ ]]; then

应该是

代码语言:javascript
复制
if [[ ${line} =~ \|[[:space:]]*([[:alpha:]]+)[[:space:]]* ]]; then

(移除多余的\)。现在对我有用了。

提示:如果您使用Vim,语法高亮显示会使您立即跳出来!

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1023369

复制
相关文章

相似问题

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