#!/bin/bash n=`wc -l /tmp/wrsfsf` if [ $n -gt 100 ] then echo deo fi
上面场景假设的前提是这个文件存在,可是若是在生产环境中,这个文件被误删除,也就是这个文件不存在时,就会出现如下提示:
所以咱们须要嵌套一个if语句来先判断下这个文件是否存在,而且要注意加上双引号,只有加上双引号才会生效,以下shell
#!/bin/bash n=`wc -l /tmp/wrsfsf` if [ -z "$n" ] then echo error else if [ $n -gt 100 ] then echo deo fi fi
上面代码块咱们也能够改良为如下代码块,这里咱们就没有嵌套if语句了bash
#!/bin/bash n=`wc -l /tmp/wrsfsf` if [ -z "$n" ] then echo error exit elif [ $n -gt 100 ] then echo deo fi
如下再来修改一下,修改成首先判断这个文件是否存在,若是不存在,就返回一个结果并退出脚本code
#!/bin/bash if [ ! -f /tmp/wrsfsf ] then echo /tmp/wrsfsf not exist exit fi n=`wc -l /tmp/wrsfsf` if [ -z "$n" ] then echo error exit elif [ $n -gt 100 ] then echo deo fi
[root@lijie-01 ~]# ls 11.txt 1.txt~ anaconda-ks.cfg bb.txt file1.sh ifi2.sh lijie.txt ??????.pdf sim.pid 123 1.txz~ a.txt b.txt file2.sh ifi3.sh log sed temp 1.txt 3.txt awk fi2.sh grep ifi.sh logs shell [root@lijie-01 ~]# if [ -n file1.sh ];then echo ok;fi ok [root@lijie-01 ~]#
再来判断下当变量的值不为空的时候,图片
[root@lijie-01 ~]# echo $c [root@lijie-01 ~]# if [ -n "$c" ];then echo $c;else echo "c is null";fi c is null [root@lijie-01 ~]#
[root@lijie-01 ~]# grep -w 'zabbix' /etc/passwd zabbix:x:997:995:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin [root@lijie-01 ~]#
下面咱们就能够根据这个结果来进行判断,并输出想要的结果字符串
[root@lijie-01 ~]# if grep -w 'zabbix' /etc/passwd;then echo zabbix exist;fi zabbix:x:997:995:Zabbix Monitoring System:/var/lib/zabbix:/sbin/nologin zabbix exist [root@lijie-01 ~]#
若是不想要将过滤出来的内容输出的话,能够加上-qit
[root@lijie-01 ~]# if grep -wq 'zabbix' /etc/passwd;then echo zabbix exist;fi zabbix exist [root@lijie-01 ~]#