Shell腳本備忘

前言:從書中記錄下來僵闯。

腳本

不需要編譯的程序文件卧抗,而是被“解釋”執(zhí)行,腳本運(yùn)行時需要一個“解釋器”鳖粟,解釋器能夠讀懂預(yù)先定義好的腳本語法社裆,并執(zhí)行;

所有的腳本有兩個共同的特點:

  • 腳本內(nèi)容是字面上可以讀懂的文本文件向图;
  • 不同的腳本必須由不同的解釋器解釋執(zhí)行泳秀,而腳本的語法則由解釋器的設(shè)計者來定義;
Bash腳本
#!/bin/bash
echo "hello bash" #這是注釋

#!/bin/bash:首行榄攀,并且必需的嗜傅,從而操作系統(tǒng)讓該文件選擇Bash來解釋執(zhí)行腳本文件;(Perl腳本:#!/bin/perl)
echo:Linux命令檩赢;

獲取輸入
  • 執(zhí)行腳本時用戶輸入吕嘀;
  • 將前一個腳本的輸出作為該腳本的輸入;
  • 腳本函數(shù)的參數(shù)贞瞒;

用戶的輸入可以用$n表示偶房,n為1~9自然數(shù),分別代表輸入?yún)?shù)中的第n個參數(shù)军浆;

#!/bin/bash
echo $1
echo $2
echo $3

執(zhí)行該腳本棕洋,輸出為:

./hello.sh i love you too
i
love
you
變量
  • 在Bash腳本中的變量沒有類型,所有的變量都是字符串乒融;
  • 變量不要單獨(dú)定義拍冠,直接賦值,賦值語句中不能有空格簇抵;
  • 引用變量時只需在變量前加$符號;
  • 為了避免引用混淆射众,常使用雙引號包含要引用的變量碟摆;
#!/bin/bash
A=b
All=all
echo "$A"ll
echo $All

執(zhí)行打印:

bll
all
條件判斷

主要用于判斷兩個字符串是否相等叨橱、兩個數(shù)字是否相等典蜕;

#!/bin/bash
if [ "$1" = "normal" ]; then
    echo "this is normal case"
elif [[ -z "$1" ]]; then
    echo "no input, ignal..."
fi
# 該代碼判斷用戶輸入的第一個參數(shù)断盛,值為“normal”字符串,顯示“this is normal case”愉舔,如果第一個參數(shù)為空钢猛,則顯示“no input, ignal...”;
  • if轩缤、elif后面一定要跟上then命迈;
  • 如果if 和 then寫在同一行, 那么then的前面要跟上;號;否則then 換行寫火的;
  • 多個判斷分支可以使用elif語句壶愤;
  • 條件語句必須使用fi結(jié)束;
  • 條件語句中“[”符號后面必須要有一個空格馏鹤;原因是在Bash腳本中“[”符號是一個可執(zhí)行文件(命令)征椒,該命令是一個條件判斷命令;

Bash腳本的比較語句中嚴(yán)格區(qū)分操作數(shù)湃累,字符串的比較和整數(shù)的比較使用不同的操作符勃救;

操作符 返回true的條件 操作數(shù)個數(shù)
-n 操作數(shù)的長度不為0 1
-z 操作數(shù)的長度為0 1
-d 操作數(shù)對應(yīng)一個目錄 1
-f 操作數(shù)對應(yīng)一個文件 1
-eq 操作數(shù)為整數(shù),并且相等 2
-neq 操作數(shù)為整數(shù)治力,但不相等蒙秒,與 -eq 相反 2
= 操作數(shù)為字符串,并且相等 2
!= 操作數(shù)為字符串琴许,不相等税肪,與 = 相反 2
-lt 小于(less than),操作數(shù)為整數(shù) 2
-gt 大于(great than)榜田,操作數(shù)為整數(shù) 2
-ge 大于等于(great equal)益兄,操作數(shù)為整數(shù) 2
-le 小于等于(less equal),操作數(shù)為整數(shù) 2

while []...do... done

#!/bin/bash
echo "please use add or delete or exit"
ACTION="default"
while [[ -n $ACTION ]]; do
    read ACTION #read:Linux命令箭券,提示用戶輸入并以按回車鍵(LF)結(jié)束輸入净捅,輸入的內(nèi)容保存到變量ACTION中
    case $ACTION in #in:Linux命令,每一個case分支用一個具體的值表示辩块,并帶一個小括弧
        add )
            echo "add somebody"
            ;; #每個分支的結(jié)束符號是兩個分號
        delete )
            echo "delete somebody"
            ;;
        exit )
            echo "complete"
            break #break:退出整個while循環(huán)
            ;;
        * ) #*:通配符
            echo "invalide action, please re-enter"
            ;;
    esac #esac:Linux命令蛔六,可以理解為case語句的結(jié)束標(biāo)識
done #done語句是整個while語句的結(jié)束標(biāo)識
#腳本的作用是根據(jù)用戶輸入的參數(shù),執(zhí)行不同的內(nèi)容

for循環(huán)

for X in 1 2 3 4 5 hello #for一般和in聯(lián)合使用废亭,用于從某個集合中逐個取出元素并對其進(jìn)行操作
do
    echo $X
done #for語句的結(jié)束標(biāo)識
#該段代碼顯示in集合中的所有元素国章,in語句后面緊跟目標(biāo)集合,X是一個變量名稱
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末豆村,一起剝皮案震驚了整個濱河市液兽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌掌动,老刑警劉巖四啰,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宁玫,死亡現(xiàn)場離奇詭異,居然都是意外死亡柑晒,警方通過查閱死者的電腦和手機(jī)欧瘪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匙赞,“玉大人佛掖,你說我怎么就攤上這事腕柜《嗤В” “怎么了滔韵?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵森缠,是天一觀的道長亡鼠。 經(jīng)常有香客問我嗓蘑,道長源祈,這世上最難降的妖魔是什么榆苞? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任猛拴,我火速辦了婚禮羹铅,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘愉昆。我一直安慰自己职员,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布跛溉。 她就那樣靜靜地躺著焊切,像睡著了一般。 火紅的嫁衣襯著肌膚如雪芳室。 梳的紋絲不亂的頭發(fā)上专肪,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天,我揣著相機(jī)與錄音堪侯,去河邊找鬼嚎尤。 笑死,一個胖子當(dāng)著我的面吹牛伍宦,可吹牛的內(nèi)容都是我干的芽死。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼次洼,長吁一口氣:“原來是場噩夢啊……” “哼关贵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起卖毁,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤坪哄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體翩肌,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年禁悠,在試婚紗的時候發(fā)現(xiàn)自己被綠了念祭。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡碍侦,死狀恐怖粱坤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情瓷产,我是刑警寧澤站玄,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站濒旦,受9級特大地震影響株旷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜尔邓,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一晾剖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梯嗽,春花似錦齿尽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至炎疆,卻和暖如春卡骂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背磷雇。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工偿警, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人唯笙。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓螟蒸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親崩掘。 傳聞我的和親對象是個殘疾皇子七嫌,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,611評論 2 353

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