回答:
awkを使用すると、より正確かつシンプルなマッチングを行うことができます。
if netstat -lnp | awk '$4 ~ /:8080$/ && $7 ~ /java/ {exit(0)} END {exit(1)}'; then …
コマンドの構造をより厳密に一致させるために、シェル内の文字列でワイルドカードマッチングを実行する移植可能な方法は、case
構造を使用することです。
case "$(netstat -lnp | grep ':8080')" in
*java*) echo "Found a Tomcat!";;
esac
別の実世界の例:)
if [[ $(HEAD mycompany-intranet.com | grep '200\ OK' | wc -l) = "1" ]]; then
echo doing some intranet settings (proxy, etc)
else
echo doing some work-at-home settings (proxy, etc)
fi
HEAD
するの?それはシステム上のカスタム関数またはエイリアスですか?
-q
/ dev / nullにリダイレクトする代わりに、grep のオプションに注意してください。を使用すると-q
、grepは何も出力せず、最初の一致後に検索を停止します。