1.簡介
????Shell 是一個(gè)用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設(shè)計(jì)語言。
????Shell 是指一種應(yīng)用程序,這個(gè)應(yīng)用程序提供了一個(gè)界面,用戶通過這個(gè)界面訪問操作系統(tǒng)內(nèi)核的服務(wù)。
????Ken Thompson 的 sh 是第一種 Unix Shell,Windows Explorer 是一個(gè)典型的圖形界面 Shell。
2.什么是shell腳本
????腳本就是shell命令組成的文件,這些命令都是可執(zhí)行程序的名字,腳本不用編譯即可通過解釋器解釋運(yùn)行。
?它是一種解釋型語言,我們可以用shell腳本操存執(zhí)行動(dòng)作,用腳本判定命令的執(zhí)行條件,用腳本來實(shí)現(xiàn)動(dòng)作的批量執(zhí)行。Shell腳本與Windows/Dos下的批處理相似,也就是用各類命令預(yù)先放入到一個(gè)文件中,方便一次性執(zhí)行的一個(gè)程序文件,主要是方便管理員進(jìn)行設(shè)置或者管理用的。但是它比Windows下的批處理更強(qiáng)大,比用其他編程程序編輯的程序效率更高,它使用了Linux/Unix下的命令。
3.如何創(chuàng)建shell腳本
????(1)腳本的開頭:
? ? ? ? 為了便于腳本的使用者可以快捷的了解到腳本的用途與其使用的解釋器,通常我們需要在腳本的開頭加上注釋
第一行必須寫? #!/bin/bash
#!/bin/bash? ? ? ?腳本使用的解釋器,通常用“#”指定
#Autho? ? ? ? ? ? ? 腳本作者
#Create_data? ?腳本創(chuàng)作時(shí)間
#Mail? ? ? ? ? ? ? ? ?腳本作者聯(lián)系方式
#Description? ? ? 腳本作用解釋
#Version? ? ? ? ? ? 腳本的版本
? ? (2)腳本命名格式
腳本名稱使用 .sh 結(jié)尾
????(3)腳本的內(nèi)容
? ? ? ? 在shell腳本中可以出現(xiàn)任何系統(tǒng)命令,輸入你想要執(zhí)行的命令即可
vim a.sh


4.if語句
? ? 單條件語句格式:
if? [? 條件? ]? ? # 開始
then
語句
else
語句
fi? ? ? ? ? ? ? ? ? ? # 結(jié)束
注意:
? ??if后面有空格
? ? 條件兩邊有空格
? ? if條件里面存在變量,需要$,而且變量兩邊需要雙引號(hào)
? ? fi是結(jié)束標(biāo)時(shí)
? ? 案例:判斷用戶輸入的用戶名(name)和密碼(password)是否為****soon 和 123,****如果是則提示登錄成功(Yes),否則提示失?。∟o)

? ? 多條件語句格式:
if [ 條件 ]?
then
語句
elif? [? 條件? ]
then
語句
......
else
語句
fi
案例: 輸入學(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
5.比較運(yùn)算符和邏輯運(yùn)算符
? ??1)比較運(yùn)算符(數(shù)字)
? ? ?-eq 比較是否相等equal-ne 比較不相等? ? ? ? ??
? ? ?notequal-gt 比較大于? ? ? ? ? ??
? ? ?greater than-ge? 比較大于等于? ? ??
?????greaterequal-lt? 比較小于? ? ? ? ??
? ? ?less than-le? 比較小于等于? ? ??
?????lessequal
(2)比較運(yùn)算符(字符串)
????==? 比較是否相等
????!=? 比較不相等
????加一操作:((i++))((i+=1))
????加n操作:s=$(($s+$i))s=$[$s+$i]((s=$s+$i))
(3)邏輯運(yùn)算符
????-a? 邏輯與? ? -o邏輯或? ? ? !邏輯非
????and? ? ? ? ? ? or? ? ? ? ? ?
6.case規(guī)則
格式:
case $變量名 in
"值")
語句;;
"值")
語句;;
.....
esac
注意:
????case這第一行以in結(jié)尾?
????值可以是字符串也可以是數(shù)字,如果數(shù)字范圍[0-9]?
????結(jié)束語句;;
????esac結(jié)束標(biāo)志