Bash

如何根據執行命令的結果執行 if 語句

  • August 29, 2020

我正在嘗試從已執行命令的輸出中執行 IF 語句。這是我試圖做到這一點的方法,但它不起作用。有誰知道這樣做的正確方法?

if [ "`netstat -lnp | grep ':8080'`" == *java* ]; then
 echo "Found a Tomcat!"
fi

使用 bash[[條件結構並更喜歡$(<command>)命令替換約定。此外,[[防止變數值的分詞,因此無需引用命令替換位。

if [[ $(netstat -lnp | grep ':8080') = *java* ]]; then
 echo "Found a Tomcat!"
fi

另一種選擇是簡單地測試grep自身的退出狀態,如果沒有匹配項,則返回 false (1),如果有匹配項,則返回 true (0),不使用該[命令。

if netstat -lntp | grep ':8080.*java' &gt; /dev/null; then
   echo "Found a Tomcat!"
fi

重定向到 /dev/null 是為了防止它也將找到的行列印到螢幕上。

引用自:https://unix.stackexchange.com/questions/52800