shell if条件判断不成功
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
shell if条件判断不成功
#! /bin/bash
PROC_NAME=apache2
COMMAND=`ps -ef |grep -w $PROC_NAME |grep -v grep |wc -l &> /dev/null`
if [[ $COMMAND -le 0 ]]; then
echo "program is stop"
/etc/init.d/apache2 restart
else
echo "program is running"
fi
我想问一下大佬们,我参照网上的教程写的一个简单判断apache2进程是否存在,但是进程已经存在的情况执行代码还是会判断到第一条,显示program is stop,重新执行apache2 restart,如果我修改了if里面的条件又会变成program is running,进程我已经终止了也一样显示program is running执行else,不执行if里面的条件,我把if改成[ $? -gt 0 ]直接用命令成功失败返回的值做条件也失败
PROC_NAME=apache2
COMMAND=`ps -ef |grep -w $PROC_NAME |grep -v grep |wc -l &> /dev/null`
if [[ $COMMAND -le 0 ]]; then
echo "program is stop"
/etc/init.d/apache2 restart
else
echo "program is running"
fi
我想问一下大佬们,我参照网上的教程写的一个简单判断apache2进程是否存在,但是进程已经存在的情况执行代码还是会判断到第一条,显示program is stop,重新执行apache2 restart,如果我修改了if里面的条件又会变成program is running,进程我已经终止了也一样显示program is running执行else,不执行if里面的条件,我把if改成[ $? -gt 0 ]直接用命令成功失败返回的值做条件也失败
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
Re: shell if条件判断不成功
为什么修改成这样就可以了,使用wc -l统计列,程序终止时为0,程序启动时为1再if [ $COMMAND -eq 0 ]不能成功判断条件ps3wifi 写了: ↑2020-02-21 14:24 #! /bin/bash
PROC_NAME=apache2
COMMAND=`ps -ef |grep -w $PROC_NAME |grep -v grep |wc -l &> /dev/null`
if [[ $COMMAND -le 0 ]]; then
echo "program is stop"
/etc/init.d/apache2 restart
else
echo "program is running"
fi
我想问一下大佬们,我参照网上的教程写的一个简单判断apache2进程是否存在,但是进程已经存在的情况执行代码还是会判断到第一条,显示program is stop,重新执行apache2 restart,如果我修改了if里面的条件又会变成program is running,进程我已经终止了也一样显示program is running执行else,不执行if里面的条件,我把if改成[ $? -gt 0 ]直接用命令成功失败返回的值做条件也失败
#! /bin/bash
PROC_NAME=apache2
#COMMAND=`ps -ef |grep -w $PROC_NAME |grep -v grep |wc -l &> /dev/null`
ps -ef |grep -w $PROC_NAME |grep -v grep &> /dev/null
if [ $? -gt 0 ]; then
echo "program is stop"
/etc/init.d/apache2 restart
else
echo "program is running"
fi
- astolia
- 论坛版主
- 帖子: 6452
- 注册时间: 2008-09-18 13:11
Re: shell if条件判断不成功
你知道这种写法的意思吗?
代码: 全选
a=`b`
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
-
- 论坛版主
- 帖子: 5231
- 注册时间: 2007-01-14 16:23
Re: shell if条件判断不成功
你好像只说了一半,没说另一半``
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
Re: shell if条件判断不成功
我就不理解为什么pgrep wc -l输出,程序没有运行时为0我给的条件就是-eq 0为什么脚本直接给我跳到else上去执行了
上次由 ps3wifi 在 2020-02-22 20:08,总共编辑 1 次。
- astolia
- 论坛版主
- 帖子: 6452
- 注册时间: 2008-09-18 13:11
Re: shell if条件判断不成功
你没弄懂``的意思。估计&> /dev/null的意义你也不太清楚。找本shell编程的教程学习一下吧,比如这篇 https://www.ituring.com.cn/book/tupubarticle/19995
-
- 帖子: 94
- 注册时间: 2010-01-08 13:09
Re: shell if条件判断不成功
谢谢astolia 写了: ↑2020-02-22 15:17 你没弄懂``的意思。估计&> /dev/null的意义你也不太清楚。找本shell编程的教程学习一下吧,比如这篇 https://www.ituring.com.cn/book/tupubarticle/19995
- astolia
- 论坛版主
- 帖子: 6452
- 注册时间: 2008-09-18 13:11
-
- 帖子: 62
- 注册时间: 2020-02-03 8:53
- 系统: linux mint
Re: shell if条件判断不成功
`~下边的`
和 “ 下边的' 是不一样的
>/dev/null 是执行过程不显示的一种方法
linux 有两个好玩的设备
/dev/null 无底洞 和
/dev/zero 该设备无穷尽地提供0
无限取 0 二进制0
和 “ 下边的' 是不一样的
>/dev/null 是执行过程不显示的一种方法
linux 有两个好玩的设备
/dev/null 无底洞 和
/dev/zero 该设备无穷尽地提供0
无限取 0 二进制0