05 shell腳本

shell程序設(shè)計(jì)流程控制

3.1 test 測試命令

3.2 expr 測試語句

3.3 If 條件判斷

3.4 for 循環(huán)

3.5 while 和 until 循環(huán)

3.6 case 條件選擇

3.7 break 和 continue

3.1 test 語句-文件測試

? 文件測試

測試文件狀態(tài):

用法:test condition 或者 [ condition ]

-------------------------------文件狀態(tài)列表----------------------------------------------

-d 目錄 ? ? ? ? ? ? ? ? ? ? ?-s 文件長度大于 0,非空

-f 正規(guī)文件 ? ? ? ? ? ? ? ?-w 文件可寫

-L 符號文件 ? ? ? ? ? ? ? ? -r 文件可讀

-x 文件可執(zhí)行

------------------------------------------------------------------------------------------------

例: $ ls -l hello

$ [ -w hello ]

$ echo $?

3.1 test 語句-文件測試

? 文件測試

使用邏輯操作符:

測試文件狀態(tài)是否 ok初狰,可以借助邏輯操作符對多個(gè)文件狀態(tài)進(jìn)行比較

-a 邏輯與,操作符兩邊均為真,結(jié)果為真,否則為假

-o 邏輯或彻犁,操作符兩邊一邊為真械姻,結(jié)果為真,否則為假

倦挂! 邏輯否,條件為假白修,結(jié)果為真

例 1: $ [ -r myfile1 -a -w myfile2 ]

$ echo $?

例 2: $ [ -w myfile1 -o -x myfile2 ]

$ echo $?

3.1 test 語句-字符串測試

? 字符串測試

字符串測試是錯(cuò)誤捕獲很重要的一部分妒峦,特別是用戶輸入或比較變量時(shí)尤為重要

格式:

test “string”

test string_operator “string”

test “string” string_operator “string”

[ string_operator string ]

[ string string_operator string ]

注:string_operator 的取值:

= 等于

!= 不等于 -z 空串 -n 非空串

例:測試環(huán)境變量 EDITOR 是否為空

3.1 test 語句-字符串測試

$ [ -z $EDITOR ]

$ echo $? 為空返回 0,否則返回 1

如果非空兵睛,取值是否為 vi

$ [ $EDITOR = “vi” ]

$ echo $?

測試變量 string1 是否等于 string2

$ string1=”hello”

$ string2=”Hello”

$ [ “$string1” = “$string2” ]

$ echo $?

note:在進(jìn)行字符串比較時(shí)肯骇,建議加引號


3.2 Exercise :- expr 測試語句

1、使用 echo 命令輸出一句話: 300/5*6= 360

注意:結(jié)果部分 360 需要使用 expr 命令運(yùn)算出來祖很,而不是直接給出結(jié)果

echo "300/5*6=`expr 300 / 5 \* 6`"

3.3 if 條件語句

格式: if 條件 1

then 命令 1

elif 條件 2

then 命令 2

else 命令 3 //注:藍(lán)色部分為可選部分

fi

注意:使用 if 語句時(shí)笛丙,必須將 then 部分放在新行,否則會產(chǎn)生錯(cuò)誤假颇,如果要

不分行胚鸯,必須使用命令分割符,即:

if 條件 1; then

命令 1

fi







一笨鸡、數(shù)值比較

-lt 小于

-le 小于等于

-gt 大于

-ge 大于等于

-eq 等于

-ne 不等于


倒引號(數(shù)字1鍵旁邊的那個(gè)鍵)

引號內(nèi)的字符串當(dāng)做shell命令行解釋執(zhí)行姜钳,得到的結(jié)果取代整個(gè)倒引號括起來的部分坦冠。

echo ‘my home is $HOME’

echo “my home is $HOME”

echo `my home is $HOME`

二、特定的 shell 變量列表:

$# 傳遞到腳本的參數(shù)個(gè)數(shù)

$* 以一個(gè)單字符串的形式顯示所有向腳本傳遞的參數(shù)哥桥,與位置變量不

同辙浑,此項(xiàng)參數(shù)可超過 9 個(gè)

$$ 腳本運(yùn)行的當(dāng)前進(jìn)程 id 號

$! 后臺運(yùn)行的最后一個(gè)進(jìn)程的進(jìn)程 id 號

$@ 與$*相同,但是使用時(shí)加引號拟糕,并在引號中返回每個(gè)參數(shù)

$? 顯示最后命令的退出狀態(tài)判呕,0 表示正確,其他任何值表示錯(cuò)誤

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末送滞,一起剝皮案震驚了整個(gè)濱河市侠草,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌犁嗅,老刑警劉巖边涕,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異愧哟,居然都是意外死亡奥吩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進(jìn)店門蕊梧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來霞赫,“玉大人,你說我怎么就攤上這事肥矢《怂ィ” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵甘改,是天一觀的道長旅东。 經(jīng)常有香客問我,道長十艾,這世上最難降的妖魔是什么抵代? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮忘嫉,結(jié)果婚禮上荤牍,老公的妹妹穿的比我還像新娘。我一直安慰自己庆冕,他們只是感情好康吵,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著访递,像睡著了一般晦嵌。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天惭载,我揣著相機(jī)與錄音旱函,去河邊找鬼。 笑死棕兼,一個(gè)胖子當(dāng)著我的面吹牛陡舅,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播伴挚,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼灾炭!你這毒婦竟也來了茎芋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤蜈出,失蹤者是張志新(化名)和其女友劉穎田弥,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铡原,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡偷厦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了燕刻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片只泼。...
    茶點(diǎn)故事閱讀 38,747評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖卵洗,靈堂內(nèi)的尸體忽然破棺而出请唱,到底是詐尸還是另有隱情,我是刑警寧澤过蹂,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布十绑,位于F島的核電站,受9級特大地震影響酷勺,放射性物質(zhì)發(fā)生泄漏本橙。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一脆诉、第九天 我趴在偏房一處隱蔽的房頂上張望甚亭。 院中可真熱鬧,春花似錦库说、人聲如沸狂鞋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽骚揍。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間信不,已是汗流浹背嘲叔。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留抽活,地道東北人硫戈。 一個(gè)月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像下硕,于是被迫代替她去往敵國和親丁逝。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評論 2 350

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

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理梭姓,服務(wù)發(fā)現(xiàn)霜幼,斷路器,智...
    卡卡羅2017閱讀 134,637評論 18 139
  • 個(gè)人學(xué)習(xí)批處理的初衷來源于實(shí)際工作誉尖;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求罪既,從而在測試過程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,706評論 0 11
  • 在shell中常用的特殊符號羅列如下: ; ;; . , / \ 'string'| ! $ ${} ...
    lupinwu閱讀 1,984評論 0 0
  • 1.創(chuàng)建文件夾 !/bin/sh mkdir -m 777 "%%1" 2.創(chuàng)建文件 !/bin/sh touch...
    BigJeffWang閱讀 10,031評論 3 53
  • Linux Shell 基本語法 一. Linux基本命令 1.1. cp命令 該命令的功能是將給出的文件或目錄拷...
    M_Baron閱讀 2,583評論 0 1