Shell腳本

一、Shell介紹

1、什么是shell腳本

Shell腳本與Windows/Dos下的批處理相似蒋伦,也就是用各類命令預(yù)先放入到一個文件中,方便一次性執(zhí)行的一個程序文件焚鹊,主要是方便管理員進行設(shè)置或者管理用的。但是它比Windows下的批處理更強大韧献,比其他編程程序編輯的程序效率更高末患,它使用了Linux/Unix下的命令。

二锤窑、Shell腳本的規(guī)則

Shell和Python都是弱語言

1璧针、 變量的規(guī)則

定義變量規(guī)則:

變量名=值

shell定義變量的規(guī)則:

1:等號兩邊不能有空格
2:定義特殊的變量需要用單引號或者雙引號結(jié)合
3:定義linux命令需要用反單引號

區(qū)分單引號和雙引號的不同和相同點

雙引號中有$變量名,輸出的是變量名對應(yīng)的變量值
單引號中有$變量名渊啰,輸出的是$變量名 
image.png
  • 定義linux命令需要用反單引號


    image.png

2探橱、 腳本的命名格式

腳本名稱使用.sh結(jié)尾

3、 腳本的起始行格式

第一行必須寫 #绘证!/bin/bash
  • 案例一:打印路徑


    image.png
  • 案例二:計算當(dāng)前文件夾有幾個文件


    image.png
  • 案例三:計算任意一個文件下含有幾個文件


    image.png

4隧膏、腳本輸入輸出格式

1:輸入語句用:read -p “描述”
2:shell輸出值:echo $變量名

5、 腳本的調(diào)用

方式1:./腳本名.sh(權(quán)限的問題)
方式2:sh 腳本名.sh

注意點:read可以傳遞多個數(shù)據(jù)read -p“name and password”name password
超過的部分都填充在最后一個變量上


image.png

6嚷那、 參數(shù)傳遞

參數(shù)傳遞:向.sh文件中傳遞數(shù)據(jù)
格式:sh 腳本名.sh 參數(shù)

$1:接收第一個參數(shù)~~$n
$n:文件名稱
$@:所有參數(shù) s
$#:參數(shù)個數(shù) $0
image.png

7胞枕、 比較運算符和邏輯運算符

(1) 比較運算符(數(shù)字)
-eq 比較是否相等        equal 
-ne 比較不相等          not equal
-gt 比較大于            greater than
-ge  比較大于等于       greater equal
-lt  比較小于           less than
-le  比較小于等于       less equal
(2) 比較運算符(字符串)
== 比較是否相等
!= 比較不相等
加一操作:((i++)) ((i+=1))
加n操作:s=$(($s+$i))  s=$[$s+$i] ((s=$s+$i))
(3) 邏輯運算符
-a  邏輯與     -o邏輯或      !邏輯非
 and            or             

8魏宽、 if語句

  • 單條件語句格式:
 if [ 條件 ]
 then
 語句
 else
 語句
 fi

注意點:
1: if后面有空格, 2:條件兩邊有空格, 3:if條件里面存在變量腐泻,需要$,而且變量兩邊需要雙引號, 4:fi是結(jié)束標(biāo)識

練習(xí):判斷用戶輸入的用戶名(name)和密碼(password)是否為****admin 和 123456,****如果是則提示登錄成功(success),否則提示失敹友(fail)

image.png

  • 多條件語句格式
if [ 條件 ]
 then
 語句
 elif [ 條件 ]
 then
 語句
 ......
 else
 語句
 fi

練習(xí):輸入學(xué)生的成績派桩,80<score<=100提示very good,60<score<=80提示good蚌斩,其他則提示不及格

#!/bin/bash
read -p"input score " score
if [ "$score" -gt 80 -a "$score" -le 100 ]
then
echo "very good"
elif [ "$score" -gt 60 -a "$score" -le 80 ]
then
echo "good"
else 
echo "not good"
fi 

9铆惑、 case規(guī)則

格式:

case $變量名 in
 "值")
 語句;;
 "值")
 語句;;
 .....
 esac

注意:

1:case這第一行以in結(jié)尾  
2:值可以是字符串也可以是數(shù)字, 如果數(shù)字范圍[0-9]  
3:結(jié)束語句;;
4:esac結(jié)束標(biāo)志

練習(xí):輸入一個序號,判斷該用戶選擇哪款產(chǎn)品鸭津,A:筆記本 B:手機 C:小臺燈

image.png

練習(xí):請輸入對客服的滿意度彤侍,【0-3】不滿意,【4-6】滿意逆趋,【7-9】非常滿意
image.png

10盏阶、 For循環(huán)

格式:

for 變量 in  列表
do
語句
done

注意1:結(jié)束標(biāo)志done


image.png
for i in 1 2 3 4 5
do
echo $i
done

擴充:試想列表中的元素過多的時候,需要怎么做闻书?
seq mix step max
注意:mix 開始數(shù)據(jù) step:間隔 max 結(jié)束數(shù)據(jù)名斟,如果step為1,可以省略魄眉,需要用反單引號砰盐,seq語句標(biāo)志

//0-100
for i in `seq 1 2 100`
do
echo $i
done

11、 While循環(huán)

while [ 條 件 ]
    do
    語句
    done

注意:
1: while后面有空格, 2:條件兩邊有空格, 3:while條件里面存在變量坑律,需要$,而且變量兩邊需要雙引號, 4:done是結(jié)束標(biāo)識
練習(xí):求1-100之間的和

image.png

三岩梳、 Shell腳本的函數(shù)

1:定義格式

函數(shù)名(){代碼 }
調(diào)用格式
函數(shù)名

注意點:必須先定義一個函數(shù),然后再調(diào)用它

image.png

2:函數(shù)中的參數(shù)

使用$n來接收數(shù)據(jù)

image.png

練習(xí)1:輸入1,100兩個整數(shù)進行求和運算晃择,并打印結(jié)果
image.png

練習(xí)2:輸入任意兩個整數(shù)進行求和運算冀值,并打印結(jié)果
image.png

3:函數(shù)中的返回值

Shell中函數(shù)中默認(rèn)存在返回值

查看函數(shù)的返回值$?

image.png

image.png

注意點:

如果沒有代碼錯誤默認(rèn)返回值為0
有代碼錯誤返回1
查看返回值內(nèi)容:$?

代碼有錯誤:
image.png

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宫屠,一起剝皮案震驚了整個濱河市列疗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浪蹂,老刑警劉巖抵栈,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異坤次,居然都是意外死亡古劲,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門浙踢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绢慢,“玉大人,你說我怎么就攤上這事洛波∫扔撸” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵蹬挤,是天一觀的道長缚窿。 經(jīng)常有香客問我,道長焰扳,這世上最難降的妖魔是什么倦零? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任误续,我火速辦了婚禮,結(jié)果婚禮上扫茅,老公的妹妹穿的比我還像新娘蹋嵌。我一直安慰自己,他們只是感情好葫隙,可當(dāng)我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布栽烂。 她就那樣靜靜地躺著,像睡著了一般恋脚。 火紅的嫁衣襯著肌膚如雪腺办。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天糟描,我揣著相機與錄音怀喉,去河邊找鬼。 笑死船响,一個胖子當(dāng)著我的面吹牛躬拢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播见间,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼估灿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了缤剧?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤域慷,失蹤者是張志新(化名)和其女友劉穎荒辕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體犹褒,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡抵窒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了叠骑。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片李皇。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖宙枷,靈堂內(nèi)的尸體忽然破棺而出掉房,到底是詐尸還是另有隱情,我是刑警寧澤慰丛,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布卓囚,位于F島的核電站,受9級特大地震影響诅病,放射性物質(zhì)發(fā)生泄漏哪亿。R本人自食惡果不足惜粥烁,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蝇棉。 院中可真熱鬧讨阻,春花似錦、人聲如沸篡殷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽贴唇。三九已至搀绣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間戳气,已是汗流浹背链患。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瓶您,地道東北人麻捻。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像呀袱,于是被迫代替她去往敵國和親贸毕。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,901評論 2 345

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

  • 一夜赵、Shell介紹 1明棍、什么是shell腳本 Shell腳本與Windows/Dos下的批處理相似,也就是用各類命...
    jokerj閱讀 73評論 0 1
  • 1寇僧、什么是 Shell腳本與Windows/Dos下的批處理相似摊腋,也就是用各類命令預(yù)先放入到一個文件中,方便一次性...
    745aacb67869閱讀 131評論 0 0
  • 一嘁傀、Shell介紹 1兴蒸、什么是shell腳本 Shell腳本與Windows/Dos下的批處理相似,也就是用各類命...
    淺色年華_7d4f閱讀 109評論 0 0
  • 一细办、Shell介紹 1橙凳、什么是shell腳本 Shell腳本與Windows/Dos下的批處理相似,也就是用各類命...
    boke閱讀 197評論 0 0
  • 一笑撞、Shell介紹 1岛啸、什么是shell腳本 Shell腳本與Windows/Dos下的批處理相似,也就是用各類命...
    Anwfly閱讀 1,847評論 0 8