【发布时间】:2018-05-08 18:57:33
【问题描述】:
我正在从现有程序中获取输入,该程序由由管道 (|) 字符分隔的字符串组成:
$ echo "$list_of_nodes"
NODE-BB-4|NODE-AA-1|DUMMY
现在我需要检查它们中的每一个是否存在于单独的文件中:
$ cat file
NODE-BB-4 1.1.1.1
NODE-AA-1 2.2.2.2
-
案例 1
当输入字符串为
"NODE-BB-4|NODE-AA-1"时应该通过,因为它们都存在于文件中, -
案例 2
当输入字符串为
"NODE-BB-4|NODE-AA-1|DUMMY"时,应该会失败,因为文件中不存在"DUMMY"。
这就是我的想法,但似乎绝对不是最好的主意:
$ echo "$list_of_nodes" |tr '|' '\n' |while read line;
> do grep -q "$line" foo ;
> echo $? ;
> done|awk '{s=s+$0} END{print s}' |awk '$1>0{print "Fail"}'
Fail
在这里,我循环每个模式以 grep 并存储返回码,然后检查它是否大于 0。
【问题讨论】: