摘要:腳本與下的批處理相似,也就是用各類命令預(yù)先放入到一個文件中,方便一次性執(zhí)行的一個程序文件,主要是方便管理員進行設(shè)置或者管理用的。函數(shù)返回值只能是整數(shù),一般用來表示函數(shù)執(zhí)行成功與否,表示成功,其他值表示失敗。
Shell 腳本與 Windows/Dos 下的批處理相似,也就是用各類命令預(yù)先放入到一個文件中,方便一次性執(zhí)行的一個程序文件,主要是方便管理員進行設(shè)置或者管理用的。但是它比 Windows 下的批處理更強大,比用其他編程程序編輯的程序效率更高,它使用了 Linux/Unix 下的命令。執(zhí)行命令更明白地來說,shell script 就像早期 dos 年代的.bat,最簡單的功能就是將許多指令匯整寫一起,讓使用者很容易地就能夠一個操作執(zhí)行多個命令,而 shell script 更是提供了數(shù)組,循環(huán),條件以及邏輯判斷等重要功能,讓使用者可以直接以 shell 來寫程序,而不必使用類似 C 程序語言等傳統(tǒng)程序編寫的語法。文章地址
方法一: bash test.sh
方法二: 得先增加 test.sh 文件可執(zhí)行權(quán)限
chmod 755 test.sh
./test.sh
語法 基礎(chǔ)語法#!/bin/bash #! 是一個約定的標記,它告訴系統(tǒng)這個腳本需要什么解釋器來執(zhí)行,即使用哪一種 Shell
set -e 確保腳本拋出遇到的錯誤
數(shù)據(jù)類型:只有字符串和整型兩種
使用雙引號
變量shell 的變量賦值的時候不用帶 $,而使用或者輸出的時候要帶 $。加減乘除的時候要加兩層小括號。括號外面要有一個 $,括號里面的變量可以不用 $。需要注意的是,變量賦值,等號兩邊不能有空格,否則會被解析成命令,報錯無此命令。
# 變量 a=10 b=10 c="this is test" d=$((a+b)) echo $a echo $c echo $d echo $((a+b))表達式
str="a b c d e f g h i j" echo ${str} #源字符串 echo ${#str} #字符串長度,包含空格 echo ${str:5} #截取從第五個后面開始到最后的字符 echo ${str:5:2} #截取從第五個后面開始的2個字符 echo ${str#a*f} #從開頭刪除a到f的字符 echo ${str##a*} #從開頭刪除a以后的字符 echo ${str%f*j} #從結(jié)尾刪除f到j(luò)的字符 echo ${str%%*j} #從結(jié)尾刪除j前面的所有字符包括j echo ${str}判斷
[ ] 里面每個變量之間都要有空格
-gt > -ge >= -lt < -le <= -eq = -ne !=
# 判斷 test 或 [] num1=10 num2=10 test $num1 -eq $num2 && echo "num1 == num2" || echo "num1 != num2" [ $num1 -eq $num2 ] && echo "num1 == num2" || echo "num1 != num2"條件語句
格式:if 條件 ; then 結(jié)果 fi ,最后面一定要有 fi 。在 shell 腳本里面,控制分支結(jié)構(gòu)結(jié)束都要和開頭的單詞相反,例如,if <–> fi,case <–> esac。
grades=70 if [ $grades -ge 90 ] && [ $grades -le 100 ];then echo "Your grade is excellent." elif [ $grades -ge 80 ] && [ $grades -le 89 ];then echo "Your grade is good." elif [ $grades -ge 70 ] && [ $grades -le 79 ];then echo "Your grade is middle." elif [ $grades -ge 60 ] && [ $grades -le 69 ];then echo "Your grade is passing." else echo "Your grade is badly." fi循環(huán)語句 while 語句
while 語句是只要條件為真就執(zhí)行下面語句。需要注意的是,這里的條件除了 while true 可以這樣寫,其它的條件都要用 test 或者 [ ] 來判斷
i=$1 while [ $i -gt 0 ] do echo $i ((i--)) doneuntil 語句
until 語句是只要條件為假就執(zhí)行下列語句。
i=$1 until [ $i -le 0 ] do echo $i ((i--)) donefor 語句
a=`seq 4 10` echo $a for i in `seq 4 10` #seq是一個命令,順序生成一串?dāng)?shù)字或者字符 do echo $i done函數(shù)
funcName() { 語句 [return 返回值] }
返回值是可選的,如果沒有顯示 return 則默認返回最后一條語句執(zhí)行的結(jié)果。
Shell 函數(shù)返回值只能是整數(shù),一般用來表示函數(shù)執(zhí)行成功與否,0表示成功,其他值表示失敗。如果 return 其他數(shù)據(jù),比如一個字符串,往往會得到錯誤提示:numeric argument required。
如果一定要讓函數(shù)返回字符串,那么可以先定義一個變量,用來接收函數(shù)的計算結(jié)果,腳本在需要的時候訪問這個變量來獲得函數(shù)返回值。
函數(shù)參數(shù)從 $1 到 $n,$0 是文件名。
# 打印數(shù)字 printNum (){ echo $1 } for i in `seq 2 8` #seq是一個命令,順序生成一串?dāng)?shù)字或者字符 do printNum $i done傳參
采用 $0 , $1 , $2 ...等方式獲取腳本命令行傳入的參數(shù),$0 獲取到的是腳本路徑以及腳本名,后面按順序獲取參數(shù),當(dāng)參數(shù)超過10個時(包括10個),需要使用 ${10}, ${11} ...才能獲取到參數(shù),但是一般很少會超過10個參數(shù)的情況。
#!/bin/bash echo "腳本名$0" echo "第一個參數(shù)$1" echo "第二個參數(shù)$2" echo "第三個參數(shù)$3" echo "第四個參數(shù)$4" echo "第五個參數(shù)$5" echo "第六個參數(shù)$6" echo "第七個參數(shù)$7" echo "第八個參數(shù)$8" echo "第九個參數(shù)$9" echo "第十個參數(shù)$10" echo "第十個參數(shù)${10}"
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/98254.html
閱讀 1127·2023-04-26 03:02
閱讀 1169·2023-04-25 19:18
閱讀 2589·2021-11-23 09:51
閱讀 2570·2021-11-11 16:55
閱讀 2620·2021-10-21 09:39
閱讀 1699·2021-10-09 09:59
閱讀 1997·2021-09-26 09:55
閱讀 3523·2021-09-26 09:55