我有一个commandb
:
printf '%s' "${PORTS[0]}"; printf ',%s' "${PORTS[@]:1}"
它列出了另一个命令的端口,其输出commandb
如下所示:
2200,800,8000
这些端口存储在文件名中res.txt
我想检查是否commandb
有特定的端口8000
,如果有,我想运行一个commandc
,否则什么也不做。
我怎样才能在 bash 中实现这一目标?
答案1
您可以使用grep -w
指定字边界:
$ grep -qw '8000' res.txt && echo 'hello world'
hello world
该-q
选项只是阻止grep
打印结果,因此您可以简单地对退出代码进行操作。如果没有该-w
选项,您将获得成功的结果,80
因为它包含在800
and中8000
:
$ grep -q '80' res.txt && echo 'hello world'; echo $?
hello world
0
$ grep -qw '80' res.txt && echo 'hello world'; echo $?
1
为了检查是否存在多个端口,您可以执行以下操作:
if grep -qw -e '8000' -e '80' res.txt; then
do something
fi