【linux編程】生信編程-shell腳本編程-if條件語句

shell編程

if 條件語句

If 條件語句主要有三中形式:

  • if...then…fi,
  • if…then…else…fi
  • if…then…elif…then…else…fi

1. if…then…fi 語法:

if 條件 
then     
   條件判斷成立時執(zhí)行的語句 
fi

這里的條件通常是一個條件測試命令 ,當條件為真 (執(zhí)行命令的退出狀態(tài)為0) 時執(zhí)行 then 后面的語句;其也可以為一個普通的命令,當執(zhí)行命令的退出狀態(tài)為 0 時執(zhí)行 then 后面的語句。then 可以寫在 if 的 '條件' 后面,以分號相隔,也可以另起一行直接寫,語句必須以 fi 結束,

例子


if echo "Hello" 
then    
    echo "world" 
fi 

str='/usr/bin/perl' 
if grep -q 'perl' "$str"; then    
    echo "I found perl in string '$str'" 
fi 

if [ 2 > 1 ]; then   
    echo "2 is bigger than 1" 
fi

2. if…then…else…fi 語法:

if 條件 
then
    條件判斷成立時執(zhí)行的語句 
else
    條件判斷不成立時執(zhí)行的語句 
fi

當 if 條件為真時執(zhí)行 then 后面的語句;當 if 條件為假時執(zhí)行 else 后面的語句,同樣語句必須以 fi 結束

例子

a=100 
b=99 
if [[ -n $a && -n $b ]]; 
then
    if test $a -ge $b; then
        echo "a ($a) is bigger than b ($b)"
    else 
        echo "a ($a) is smaller than b ($b)"
    fi
fi

執(zhí)行腳本得到結果: a (100) is bigger than b (99)


3. if…then…elif…then…else…fi

if 條件 
then
    (if) 條件判斷成立時執(zhí)行的語句 
elif 條件 
then
    (elif) 條件判斷成立時執(zhí)行的語句 
else
    (if 與 elif) 條件判斷都不成立時執(zhí)行的語句 
fi

語句必須以 fi 結束??梢园?fi 記成 if 的顛倒,if...fi 閉合后才形成完整的 if 語句。

例子

#!/bin/bash
set -e 
set -u 
if [[ -x example.sh ]]; then
    echo "The file 'example.sh' exists and is executable" 
elif [[ -f example.sh ]]; then
    echo "The file 'example.sh' exists but is not executable" 
else
    echo "The file 'example.sh' does not exist" 
fi

另存腳本為example3-3.sh,執(zhí)行腳本;執(zhí)行 touch example.sh 后執(zhí)行腳本;執(zhí)行 chmod +x example.sh 后再次執(zhí)行腳本,將得到以下結果:


條件判斷之 test, [] 與 [[]]

這三個命令都屬于 shell 里面的條件測試命令,條件判斷的返回狀態(tài)為 0 (真) 或者 1 (假),if 基于條件測試返回的結果來決定如何執(zhí)行下面的代碼。

需要注意的是 [ ] 與 [[ ]] 也是命令!

故成對方括號之間的內容可以理解為條件測試的參數,根據我們前面講過的原則,參數之間要以空格分割,所以在寫條件判斷時一定要注意:**用空格分割參數! **

1. 整數和字符串比較操作符:

  • 操作符 描述
  • -z str 字符串為空為真
  • -n str 字符串為非空為真
  • = 兩個字符串相同為真
  • != 兩個字符串不同為真
  • -eq 操作對象的值相等為真
  • -ne 操作對象的值不等為真
  • -gt 左面的值大于右面的值為真
  • -lt 左面的值小于右面的值為真
  • -ge 左面的值大于等于右面的值為真
  • -le 左面的值小于等于右面的值為真

2. 文件和目錄測試操作符

常用的文件測試操作符有:

  • 操作符 描述
  • -f 測試文件是否為常規(guī)文件
  • -e 測試文件是否存在
  • -d 測試文件是否為目錄
  • -r 測試文件是否可讀
  • -w 測試文件是否可寫
  • -x 測試文件是否可執(zhí)行

3. 邏輯操作符:

  • 邏輯操作符 && (所有條件都符合為真)
  • || (其中一個條件符合即為真)
  • ! (不符合條件為真)

4. 正則表達比較操作符 (=~)

  • 通配符 描述
  • ^ 匹配行的開始
  • $ 匹配行的結束
  • . 匹配任意一個字符
    • 匹配零次或多次前面的單元/字符 *
  • ? 匹配零次或1次前面的單元/字符
    • 匹配1次或者多次前面的單元/字符 +
  • \n 匹配換行符
  • \t 匹配制表符
  • \s 匹配空格
  • \w 匹配字母數字下劃線
  • \d 匹配數字

條件語句使用技巧

  • 務必記得用 fi 來封閉 if 語句
  • 在使用新的關鍵詞 (如 then else 等) 時,記得另起一行或者用 ';' 分割。
  • 在條件判斷中使用變量時,我們最好用雙引號將變量引起來,以減少錯誤的產生。
  • 在 [] 或 [[ ]] 是命令,記得其中的參數之間需要加空格。
  • test 和 [ ] 完全相同,但 [[ ]] 是它們的加強版本,在不想了解細節(jié)的情況下,推薦使用 [[ ]] 進行條件判斷。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 基礎命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,230評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現,斷路器,智...
    卡卡羅2017閱讀 136,678評論 19 139
  • 1 概述 編寫shell腳本,一般離不開條件選擇,條件判斷以及循環(huán)語句。掌握這三個語法,將大大提高腳本的編寫效率,...
    ghbsunny閱讀 1,691評論 0 0
  • 時間:2017-10-22星期日早上6點鐘 地點方式:微信語音 會議記錄:劉雙雙 時間郎:宋蔚 參會人員分享排序:...
    一點點媽媽閱讀 295評論 0 0
  • 就像她的咖啡店 就像她的茅草屋 就像她的暖暖的小家 就像你和我一樣的心情 世界這么大,每個人都有自己的渴望,我沒有...
    PERFEI閱讀 164評論 0 1

友情鏈接更多精彩內容