shell腳本學習(四)[判斷和循環(huán)]

Chapter15 test比較

測試與判斷
退出程序命令
exit
exit 10 返回10給shell,返回值非0位不正常退出
$? 判斷當前shell前一個進程是否正常退出

vim 8.sh
#!/bin/bash
# demo exit
pwd
exit
bash 8.sh

測試命令test

1.test命令用于檢查文件或者比較值。

2.test可以做以下測試:

文件測試吼拥,整數(shù)比較測試哺哼,字符串測試。

3.test測試語句可以簡化為 [] 符號。

4.[] 符號還有擴展寫法 [[]]兢卵,支持&& || < >

#使用man test查看test用法
usage:test EXPRESSION,也可以用中括號代替test蜈首,推薦使用。
#字符串測試,test區(qū)分大小寫肃晚。
STRING1 = STRING2 #字符串相等
STRING1 != STRING2 #字符串不相等
-z STRING #字符串長度為0
#整數(shù)比較锚贱,使用單個中括號時要用下面的字母,兩個中括號連用時关串,可以用符號拧廊,如大于號小于號等。
INTEGER1 -eq INTEGER2 #equal
INTEGER1 -ge INTEGER2 #greater or equal
INTEGER1 -gt INTEGER2 #greater
INTEGER1 -le INTEGER2 #less or equal
INTEGER1 -lt INTEGER2 #less than
#對文件的判斷
[-d /etc/ ]  #-d file 文件存在并且是目錄
[-e /etc/ ]   #-e file 文件存在
[-d /etc/passwd ]  #-f file 文件存在并且是一個普通文件

Chapter16 if判斷的使用

使用if-then語句

if-then語句的基本用法:

if [ 測試條件成立 ] 或 命令返回值是否為0

then 執(zhí)行相應命令

fi 結束

#if [] 來判斷用戶ID
if [ $UID =0 ]
then
   echo "root user"
fi
#if command  使用pwd做測試
if pwd
then
   echo " pwd running"
fi

Chapter17 if-else判斷的使用

使用if-then-else語句
只有單一的條件晋修,非此即彼的關系才使用吧碾。

if-then-else語句可以在條件不成立時也運行相應的命令:

if [ 測試條件成立 ]

then 執(zhí)行相應命令

else 測試條件不成立,執(zhí)行相應命令

fi 結束

舉例:

#判斷當前用戶是否是root
vim 9.sh
#!/bin/bash
#if else demo

if [ $USER = root];then
   echo "root user"
else
   echo "other user"
fi
chmod u+x 9.sh

使用if-elif-else語句

if-then-else語句可以在條件不成立時也運行相應的命令墓卦,即三種并列倦春,添加了兩種條件。

if [ 測試條件成立 ]

then 執(zhí)行相應命令

elif [ 測試條件成立 ]

then 執(zhí)行相應命令

else 測試條件不成立趴拧,執(zhí)行相應命令

fi 結束

#判斷當前用戶
vim 10.sh
#!/bin/bash
#root user1 other
if [ $USER = root ];then
        echo "root"
elif [ $USER = user1 ];then
        echo "user1"
else
        echo " other user"
fi

Chapter18 嵌套if的使用

簡而言之就是溅漾,if滿足一個條件后,再去判斷著榴,再執(zhí)行添履。

if [ 測試條件成立 ]

then 執(zhí)行相應命令

? if [ 測試條件成立 ]

? then 執(zhí)行相應命令

? fi

fi 結束

vim 11.sh
#!/bin/bash
#demo if then if then fi fi
if [ $UID = 0 ];then
       echo "please run"
       if [ -x /tmp/10.sh ] ; then
             /tmp/10.sh #判斷10.sh是否有可執(zhí)行權限
        fi
else
       echo " switch user root"
fi

Chapter19 case分支

與if可以互換,case語句和select語句可以構成分支脑又。
這一部分并未進行深入學習暮胧。

case "$變量" in

? "情況1" )

? 命令... ;;

? "情況2")

? 命令... ;;

? *);;

esac

vim 12.sh
#!/bin/bash
# case demo
case "$1" in
       "start"|"START")
       echo $0 start.....
       ;;
       "stop")
       echo $0 stop.....
       ;;
       "restart"|"reload")
       echo $0 restart.....
       ;;
       *) #輸入錯誤命令時會匹配*號。
       echo "Usage: $0 {start|stop|restart|reload}"
       ;;
esac

Chapter20 循環(huán)

1.使用for循環(huán)遍歷命令的執(zhí)行結果

for循環(huán)的語法

? for 參數(shù) in 列表

? do 執(zhí)行的命令

? done 封閉一個循環(huán)

*使用反引號或$()方式執(zhí)行命令问麸,命令的結果當作列表進行處理往衷。

*列表中包含多個變量,變量用空格分隔

*對文本處理严卖,要使用文本查看命令取出文本內(nèi)容

*默認逐行處理席舍,如果文本出現(xiàn)空格會當作多行處理。

{1..9} #花括號產(chǎn)生列表
mkdir {1..9} #產(chǎn)生9個目錄

for i in {1..9}
do
echo hello ;echo $i
done
#對文件批量改名,這一部分代碼我用著是報錯的哮笆,并沒有達到我的目的
for filename in 'ls *.mp3'
do
mv $filename $(basename $filename .mp3).mp4
done

#使用basename提取出.mp3前面的名字 usage: basename filename.擴展名 擴展名

2.使用for循環(huán)遍歷變量和文件的內(nèi)容

for循環(huán)更像是從列表中取出元素来颤,處理完之后汰扭,再取出另一個元素。

2.1列表中包含多個變量福铅,變量用空格分隔

2.2對文本處理萝毛,要使用文本查看命令取出文本內(nèi)容

默認逐行處理,如果文本出現(xiàn)空格會當作多行處理滑黔。

Chapter21 C語言風格的for命令

這部分內(nèi)容并未做深入了解笆包,由于恐懼心理。

for ((變量初始化略荡;循環(huán)判斷條件庵佣;變量變化))

do

? 循環(huán)執(zhí)行的命令

done

for (( i=1 ; i<=10;i++ ))
do
    echo $i
done

Chapter22 while循環(huán)和until循環(huán)

while循環(huán)

寫法:
while test測試一直成立

do

? 命令

done

until循環(huán)

與while循環(huán)相反,循環(huán)測試為假時撞芍,執(zhí)行循環(huán)秧了,為真時循環(huán)停止跨扮。

a=1
while [ $a -lt 10 ];
do  ((a++));
echo $a;
done
#until的死循環(huán)
until [ 5 -lt 4 ];
do
echo always;
done

講者說序无,while使用的更常見。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末衡创,一起剝皮案震驚了整個濱河市帝嗡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌璃氢,老刑警劉巖哟玷,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異一也,居然都是意外死亡巢寡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進店門椰苟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來抑月,“玉大人,你說我怎么就攤上這事舆蝴∏酰” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵洁仗,是天一觀的道長层皱。 經(jīng)常有香客問我,道長赠潦,這世上最難降的妖魔是什么叫胖? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮她奥,結果婚禮上瓮增,老公的妹妹穿的比我還像新娘疲陕。我一直安慰自己,他們只是感情好钉赁,可當我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布蹄殃。 她就那樣靜靜地躺著,像睡著了一般你踩。 火紅的嫁衣襯著肌膚如雪诅岩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天带膜,我揣著相機與錄音吩谦,去河邊找鬼。 笑死膝藕,一個胖子當著我的面吹牛式廷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播芭挽,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼滑废,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了袜爪?” 一聲冷哼從身側響起蠕趁,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎辛馆,沒想到半個月后俺陋,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡昙篙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年腊状,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苔可。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡缴挖,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出硕蛹,到底是詐尸還是另有隱情醇疼,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布法焰,位于F島的核電站秧荆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏埃仪。R本人自食惡果不足惜乙濒,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颁股,春花似錦么库、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至亏掀,卻和暖如春忱反,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背滤愕。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工温算, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人间影。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓注竿,卻偏偏與公主長得像,于是被迫代替她去往敵國和親魂贬。 傳聞我的和親對象是個殘疾皇子巩割,可洞房花燭夜當晚...
    茶點故事閱讀 43,697評論 2 351

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

  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,378評論 0 5
  • Shell腳本語言學習一Shell腳本語言學習三 Shell腳本語言 echo命令? 顯示普通字符串腳本代碼: ...
    SimpleBK閱讀 442評論 0 1
  • 個人學習批處理的初衷來源于實際工作;在某個迭代版本有個BS(安卓手游模擬器)大需求随橘,從而在測試過程中就重復涉及到...
    Luckykailiu閱讀 4,706評論 0 11
  • 第 2 章 SHELL 基礎知識2.1 shell腳本我們在上面簡單介紹了一下什么是shell腳本喂分,現(xiàn)在我們來進一...
    LiWei_9e4b閱讀 1,562評論 0 0
  • 內(nèi)容使用if-then語句嵌套if語句test命令復合條件測試使用雙方括號和雙括號case命令 許多程序要求對sh...
    王詩翔閱讀 1,094評論 0 3