Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 分析Bash脚本中的命令输出_Linux_Bash_Scripting - Fatal编程技术网

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