0 then sleep 300 else date >>do.log ... LoveUnix AIX,UNIX,LINUX,DB2,TSM,POWER 企业级技术学习论坛 - Discuz! Archiver">
LoveUnix » 编程开发 & Rational » linux下shell的if语句如何写?
让LU留住您的每

一天 让LU博客留住您的每一天
2006-4-14 18:12 polosky
linux下shell的if语句如何写?

在linux的bash环境下 执行如下脚本do.sh
while (true)
do
PID="`ps -ef | grep aaa|grep -v 'grep'   | awk '{print $2}'`"
      if  $PID > 0
      then
         sleep 300
      else
         date >>do.log
         echo aaa >>do.log
      fi
done
报错如下:
./do.sh: line 4: 21474: command not found
将if 后加了圆括号 、把>换成 -gt 都试了,仍然报错,搞不懂了,指点一下吧,谢了。

2006-4-17 13:01 大漠孤星
if [ a -gt 0 ] 注意在条件两边加上空格
then
else
fi

你要注意$PID的值出来是不是1 2 3 4 之类的,如果是,还要改你的PID="`ps -ef | grep aaa|grep -v 'grep'   | awk '{print $2}'`"

2006-4-17 14:29 polosky
顺便问一下,PID="`ps -ef | grep aaa|grep -v 'grep'   | awk '{print $2}'`"的结果有很多行,只取第一行怎么写呢?

2006-4-17 15:07 大漠孤星
ps -ef | grep aaa|grep -v 'grep'   | awk '{print $2}'|head -1

2006-4-17 16:06 polosky
试验了,没错,问题又来了,如果是想对PID=`ps -ef | grep aaa|grep -v 'grep'   | awk '{print $2}' |head -1` 的结果进行如果为空的判断和处理,该怎么用if语句表示呢?

2006-6-26 15:21 wind_7th
[quote]原帖由 [i]polosky[/i] 于 2006-4-17 16:06 发表
试验了,没错,问题又来了,如果是想对PID=`ps -ef | grep aaa|grep -v 'grep'   | awk '{print $2}' |head -1` 的结果进行如果为空的判断和处理,该怎么用if语句表示呢? [/quote]

[quote]PID=`ps -ef | grep aaa|grep -v 'grep'   | awk '{print $2}' |head -1|wc -l`[/quote]
如果查找有结果$PID就是1,查找没有结果$PID就是0。下面的if部分都不改都行了。

2006-8-20 15:34 luiwei1981
wind_7th 你好

wind_7th  你好 希望你能加我QQ46334701 我是新手 希望你能指点我
爱U新生

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.