Shell 編程之if常見語法

if語句基本語法

if condition
then 
       staements
elif condition
then 
    statements
else
    statements
fi

常見條件表達式

  • 文件表達式

if [ -f  file ]    如果文件存在
if [ -d ...   ]    如果目錄存在
if [ -s file  ]    如果文件存在且非空 
if [ -r file  ]    如果文件存在且可讀
if [ -w file  ]    如果文件存在且可寫
if [ -x file  ]    如果文件存在且可執行   
  • 整數變量表達式
shell中邏輯關係判斷條件(用於數值判斷)
-------------------------------------------  
| 邏輯關係   |          shell語句           |         
|   >       |       -gt (greater than)    |
|   <       |       -lt (less than)       |
|   ==      |       -eq (equal)           |
|   >=      |       -ge (greater equal)   |
|   <=      |       -le (less equal)      |
|   !=      |       -ne (no equal)        |
-------------------------------------------
  • 字符串變量表達式
If  [ $a = $b ]               #  如果string1等於string2
                              #  字符串允許使用賦值號做等號
if  [ $sting1  !=  $string2 ] #  如果string1不等於string2       
if  [ -n $string  ]           #  如果string 非空(非0),返回0(true)  
if  [ -z $string  ]           #  如果string 爲空
if  [ $sting ]                # 如果string 非空,返回0 (和-n類似)  

= 作爲等於時,其兩邊都必須加空格,否則失效

總結:if邏輯判斷語句也可寫在同一行,用";"分隔。
#! /bin/bash
## if 語句
## Written by coohx
a=5
if [ $a -gt 10 ];then echo "a>10";else echo "a<=10";fi

常用語法總結:

#! /bin/bash
## if 語句
## Written by COOHX
##############整數變量表達式##################
a=5
if [ $a -gt 10 ];then echo "a>10";else echo "a<=10";fi


##############文件表達式######################
# -s 文件存在且非空
if [ -s 1.txt  ];then
   echo "OK!"
else
   echo "false!"
fi


#############字符串變量表達式#################
var1=huangxin
var2=coohx
#字符串變量判斷相等時,等號與左右兩邊的變量有空格,否則條件表達式‘$var="string"’會被識別爲一個變量,即變量 $var="string"
#if  [ $var2 = "huangxin" ];then
#if [ -z $1 -a  $var2 = "huangxin" ];then
if [ -z $1 ] && [ $var2 != "huangsdfxin" ];then
   echo "OK!"
else
   echo "false!"
fi



##############字符串變量表達式##############
string=notnull
# $string 等價於 -n $string,即 不爲空時返回0,爲真!
if [ $string ];then
   echo "not null!"
else
   echo "null!"
fi
#echo $string


##############if 簡化語句 ############
# [ conditions ] 若成立,就執行&&後面的命令
[ -f 1.txt ] && rm 1.txt 
# [ conditions ] ||  若不成立,就執行||後面的命令
[ -f 1.txt ] || touch 1.txt
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章