dja*_*fan 85 shell bash text-processing netstat
我正在尝试从已执行命令的输出中执行 IF 语句。这是我尝试这样做的方法,但它不起作用。有谁知道正确的方法来做到这一点?
if [ "`netstat -lnp | grep ':8080'`" == *java* ]; then
echo "Found a Tomcat!"
fi
Run Code Online (Sandbox Code Playgroud)
iru*_*var 99
使用 bash[[条件构造并首选$(<command>)命令替换约定。此外,[[防止变量值的分词,因此无需引用命令替换位。
if [[ $(netstat -lnp | grep ':8080') = *java* ]]; then
echo "Found a Tomcat!"
fi
Run Code Online (Sandbox Code Playgroud)
Ran*_*832 40
另一种选择是简单地测试grep自身的退出状态,如果没有匹配项,它将返回 false (1),如果有匹配项,则返回 true (0),不使用该[命令。
if netstat -lntp | grep ':8080.*java' > /dev/null; then
echo "Found a Tomcat!"
fi
Run Code Online (Sandbox Code Playgroud)
重定向到 /dev/null 是为了防止它也将找到的行打印到屏幕上。
更简单的,
netstat -lntp | grep ':8080.*java' > /dev/null && command
Run Code Online (Sandbox Code Playgroud)
如果你只想做一件事。