Linux 分析Bash脚本中的命令输出
我想运行一个命令,给出以下输出并对其进行分析:Linux 分析Bash脚本中的命令输出,linux,bash,scripting,Linux,Bash,Scripting,我想运行一个命令,给出以下输出并对其进行分析: [VDB VIEW] [VDB] vhctest [BACKEND] domain.computername: ENABLED:RW:CONSISTENT [BACKEND] domain.computername: ENABLED:RW:CONSISTENT ... 我只对一些关键作品感兴趣,比如“ENABLED”等。我不能只搜索ENABLED,因为我需要一次解析每一行 这是我的第一个剧本,我想知
[VDB VIEW]
[VDB] vhctest
[BACKEND] domain.computername: ENABLED:RW:CONSISTENT
[BACKEND] domain.computername: ENABLED:RW:CONSISTENT
...
我只对一些关键作品感兴趣,比如“ENABLED”等。我不能只搜索ENABLED,因为我需要一次解析每一行
这是我的第一个剧本,我想知道是否有人能帮我
编辑:
我现在有:
cmdout=`mycommand`
while read -r line
do
#check for key words in $line
done < $cmdout
用法
这不是最好的解决方案,但它是对您想要的内容的逐字翻译,应该给您一些开始的内容,并添加您自己的逻辑。出现错误的原因是
done < $cmdout
或
但是,最后一个将创建子shell,当循环退出时,在循环中设置的任何变量都将丢失。@Mr Shoubs-hmmm。。。尝试
YOUR_COMMANDS | grep-e“YOUR_KEYWORD1\| YOUR_KEYWORD2\|…”
或将输出导入一个文件中我搜索的每个关键字都是互斥的-例如,我想知道每行包含哪些关键字。这最终将用于Nagios。您可以使用管道或流程替换。if echo“$line”| grep-q“$1”;然后
-不需要反勾号、括号、wc
或!=0
$ cat test.sh
#!/bin/bash
while read line ; do
if [ `echo $line|grep "$1" | wc -l` != 0 ]; then
if [ `echo $line|grep "$2" | wc -l` != 0 ]; then
echo "output 1"
else
echo "output 0"
fi
fi
done
$ cat in.txt | ./test.sh ENABLED RW
output 1
output 1
done < $cmdout
done <<< $cmdout
done <<EOF
$cmdout
EOF
done < <(mycommand) # without using the variable at all
done <<< $(mycommand)
done <<EOF
$(mycommand)
EOF
mycommand | while
...
done