分页: 1 / 1
shell if条件判断不成功
发表于 : 2020-02-21 14:24
由 ps3wifi
#! /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 ]直接用命令成功失败返回的值做条件也失败
Re: shell if条件判断不成功
发表于 : 2020-02-21 14:44
由 ps3wifi
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 ]直接用命令成功失败返回的值做条件也失败
为什么修改成这样就可以了,使用wc -l统计列,程序终止时为0,程序启动时为1再if [ $COMMAND -eq 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
Re: shell if条件判断不成功
发表于 : 2020-02-22 1:04
由 astolia
Re: shell if条件判断不成功
发表于 : 2020-02-22 14:15
由 ps3wifi
astolia 写了: ↑2020-02-22 1:04
你知道
这种写法的意思吗?
就是给a赋值为b,后面调用变量a就是`b`,不知道我的理解对不对
Re: shell if条件判断不成功
发表于 : 2020-02-22 14:33
由 onlylove
你好像只说了一半,没说另一半``
Re: shell if条件判断不成功
发表于 : 2020-02-22 14:39
由 ps3wifi
onlylove 写了: ↑2020-02-22 14:33
你好像只说了一半,没说另一半``
我就不理解为什么pgrep wc -l输出,程序没有运行时为0我给的条件就是-eq 0为什么脚本直接给我跳到else上去执行了
Re: shell if条件判断不成功
发表于 : 2020-02-22 15:17
由 astolia
你没弄懂``的意思。估计&> /dev/null的意义你也不太清楚。找本shell编程的教程学习一下吧,比如这篇
https://www.ituring.com.cn/book/tupubarticle/19995
Re: shell if条件判断不成功
发表于 : 2020-02-22 18:53
由 ps3wifi
Re: shell if条件判断不成功
发表于 : 2020-02-23 12:37
由 astolia
你确定?你实际运行过你写的那条命令,还是只凭想象?
Re: shell if条件判断不成功
发表于 : 2020-02-23 22:40
由 乳酸菌
`~下边的`
和 “ 下边的' 是不一样的
>/dev/null 是执行过程不显示的一种方法
linux 有两个好玩的设备
/dev/null 无底洞 和
/dev/zero 该设备无穷尽地提供0
无限取 0 二进制0