#!/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 ~]#