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

shell編程

if條件語句實例

1. if 在使用新的關鍵詞 (如 then else 等) 時雷客,可以另起一行,也可以用 ';' 分割烛卧;但 必須以 fi 結尾佛纫。

$ a="Hello"
$ b="World"
$ if [ "$a" != "$b" ]; then echo "'$a' is not the same as '$b'"; fi
'Hello' is not the same as 'World'

$ if [ "$a" != "$b" ]
  then 
  echo "'$a' is not the same as '$b'"
  fi
'Hello' is not the same as 'World'

上面兩種寫法都可以,得到的結果一致总放。

要以fi結尾呈宇,成對出現(xiàn)

$ if [ "$a" != "$b" ]; then echo "'$a' is not the same as '$b'";
> 
# 如果不以 fi 結尾, shell 將顯示一個 > 符號局雄,等待用戶繼續(xù)輸入其它命令甥啄,如果這時,用戶自己手動再輸入 fi, 則結果將正常顯示:
'Hello' is not the same as 'World'

2. test, [ 和 [[ 在進行字符串比較時炬搭,可以使用 =, !=, -z, -n 等形式 (比如上例中的 !=)蜈漓, 也可以使用 > 或者 < (但 test 和 [ 使用 < 或 > 時需要轉義)穆桂,但三者在進行整數(shù)比較時,必須使用 -eq, -ne, -gt, -lt 等形式

$ c=11
$ d=2
$ if [ "$c" \> "$d" ]; then echo "$c is greater than $d"; else echo "$c is less than $d"; fi
11 is less than 2

$ if [ "$c" -gt "$d" ]; then echo "$c is greater than $d"; else echo "$c is less than $d"; fi
11 is greater than 2
# 對于整數(shù)比較融虽,我們需要使用 -gt 等表達式享完,如果使用 > 或 <, shell 將以字符串的形式比較而得到錯誤結果。

$ a="Ab"
$ b="a"
$ if [ "$a" > "$b" ]; then echo "This expression is wrong"; fi
This expression is wrong

$ if [ "$a" < "$b" ]; then echo "This expression is wrong"; fi
This expression is wrong
# 如果不進行轉義有额,> 和 < 僅被理解為重定向符般又,條件判斷結果始終為真。

$ if [ "$a" \< "$b" ]; then echo "'$a' is less than '$b'"; else echo "'$a' is greater than '$b'"; fi
'Ab' is less than 'a'

# 在字符串比較時巍佑,使用每個字母的ASCII數(shù)值來決定排序(小寫字母大于大寫字母)茴迁,并從第一位開始比較。

$ if [[ "$a" < "$b" ]]; then echo "'$a' is less than '$b'"; else echo "'$a' is greater than '$b'"; fi
'Ab' is greater than 'a'

# [[ 在比較字符串時不需要轉義萤衰,但是似乎對大小寫字母的大小判斷結果與 [ 不同堕义,我暫時還沒有查到原因,小伙伴們在使用時一定要注意脆栋。

3. test 和 [ 二者是一致的倦卖,即 'test expr' 與 [ expr ] 所起的作用完全相同。

$ a="Hello"
$ b="World"

$ if [ "$a" != "$b" ]; then echo "'$a' is not the same as '$b'"; fi
'Hello' not the same as 'World'

$ if test "$a" != "$b" ; then echo "'$a' is not the same as '$b'"; fi
'Hello' not the same as 'World'

4. [[ 是 test 和 [ 的加強版筹吐,支持 && 等形式邏輯判斷糖耸,進行算數(shù)擴展和正則表達比較等。

$ a=1
$ b=2

$ if [ $a -gt 0 -a $b > 0 ]; then echo "Both a and b are greater than 0"; fi
Both a and b are greater than 0

$ if [ $a -gt 0 && $b > 0 ]; then echo "Both a and b are greater than 0"; fi
-bash: [: missing `]'

$ if [[ $a -gt 0 && $b > 0 ]]; then echo "Both a and b are greater than 0"; fi
Both a and b are greater than 0

# [ 僅支持 -a (邏輯與) 和 -o (邏輯或) 這樣的邏輯操作符丘薛,而 [[ 支持 && 和 ||, 更靈活。



if [ "Hello World" =~ Hello ]; then echo "Example of regular expression comparison"; fi 
-bash: [: =~: binary operator expected

if [[ "Hello World" =~ Hello ]]; then echo "Example of regular expression comparison"; fi 
Example of regular expression comparison

# [[ 支持正則表達比較邦危,而 [ 不支持洋侨。

[ 和 [[ 才是 條件判斷命令,其后面跟著要判斷的條件 (空格分割倦蚪,很重要), ] 和 ]] 則表示條件判斷的結束

$ a=1
$ b=2
$ if [ $a==$b ]; then echo "$a equals $b"; fi
1 equals 2
$ if [[ $a==$b ]]; then echo "$a equals $b"; fi
1 equals 2
# 如果不加空格希坚,條件判斷不能正常進行
$ if [[ $a == $b ]]; then echo "$a equals $b"; else echo "Now you konw the importance of using space"; fi
Now you konw the importance of using space


最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市陵且,隨后出現(xiàn)的幾起案子裁僧,更是在濱河造成了極大的恐慌,老刑警劉巖慕购,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聊疲,死亡現(xiàn)場離奇詭異,居然都是意外死亡沪悲,警方通過查閱死者的電腦和手機获洲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來殿如,“玉大人贡珊,你說我怎么就攤上這事最爬。” “怎么了门岔?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵爱致,是天一觀的道長。 經(jīng)常有香客問我寒随,道長糠悯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任牢裳,我火速辦了婚禮逢防,結果婚禮上,老公的妹妹穿的比我還像新娘蒲讯。我一直安慰自己忘朝,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布判帮。 她就那樣靜靜地躺著局嘁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪晦墙。 梳的紋絲不亂的頭發(fā)上悦昵,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音晌畅,去河邊找鬼但指。 笑死,一個胖子當著我的面吹牛抗楔,可吹牛的內(nèi)容都是我干的棋凳。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼连躏,長吁一口氣:“原來是場噩夢啊……” “哼剩岳!你這毒婦竟也來了?” 一聲冷哼從身側響起入热,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤拍棕,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后勺良,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體绰播,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年郑气,在試婚紗的時候發(fā)現(xiàn)自己被綠了幅垮。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖忙芒,靈堂內(nèi)的尸體忽然破棺而出示弓,到底是詐尸還是另有隱情,我是刑警寧澤呵萨,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布奏属,位于F島的核電站,受9級特大地震影響潮峦,放射性物質(zhì)發(fā)生泄漏囱皿。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一忱嘹、第九天 我趴在偏房一處隱蔽的房頂上張望嘱腥。 院中可真熱鬧,春花似錦拘悦、人聲如沸齿兔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽分苇。三九已至,卻和暖如春屁桑,著一層夾襖步出監(jiān)牢的瞬間医寿,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工蘑斧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留靖秩,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓竖瘾,卻偏偏與公主長得像盆偿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子准浴,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容