Bash
如何根據執行命令的結果執行 if 語句
我正在嘗試從已執行命令的輸出中執行 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' > /dev/null; then echo "Found a Tomcat!" fi
重定向到 /dev/null 是為了防止它也將找到的行列印到螢幕上。