日期:2014-05-16  浏览次数:20952 次

netstat -an | grep LISTEN |grep 12458
写了一个shell脚本,怎么都执行都得不到想要的结果
#!/bin/bash
echo " press y to continue "

www='netstat -an | grep LISTEN |grep 12344'
$www
if [ "$www" = "12344" ]; then
  echo "script is running :--------$www"
else
   echo "stop"
fi
总是执行不对
得到如下类似的脚本
unix  2      [ ACC ]     STREAM     LISTENING     12344  /var/run/cups/cups.sock
unix  2      [ ACC ]     STREAM     LISTENING     13071  public/cleanup
unix  2      [ ACC ]     STREAM     LISTENING     13078  private/tlsmgr
unix  2      [ ACC ]     STREAM     LISTENING     13082  private/rewrite
unix  2      [ ACC ]     STREAM     LISTENING     13086  private/bounce
不知道哪里写错了请指导
shell

------解决方案--------------------
你这个脚本是不是就是想检查这个端口有没有启,来证明程序有没有在运行,对吧?
如果是这样,那你在if前“$www”这是做什么,你这样就是执行搜索出来的结果。肯定会提示找不到什么命令。
改成下面的:

#!/bin/bash

if `netstat -an 
------解决方案--------------------
 grep LISTEN 
------解决方案--------------------
grep 12344 1>/dev/null 2>&1` ; then
  echo "script is running -------"
else
   echo "stop"
fi

注意命令两边是键盘tab键上那个顿号,不是单引号。不知道是不是浏览器的原因,你的我复制出来看是单引号