一、Shell腳本的規(guī)則
? ? 1、Shell 和python都是弱語(yǔ)言
? ? 2、變量的規(guī)則:變量名=值
? ? 3、shell定義變量的規(guī)則:
? ? ? ? (1)等號(hào)兩邊不能有空格
? ? ? ? (2)定義特殊的變量需要用單引號(hào)或者雙引號(hào)結(jié)合
? ? ? ? (3)定義linux命令需要用反單引號(hào)
????4、區(qū)分單引號(hào)和雙引號(hào)的不同和相同點(diǎn)
? ? ? ?(1) 雙引號(hào)中有$變量名,輸出的是變量名對(duì)應(yīng)的變量值
? ? ? ?(2)單引號(hào)中有$變量名,輸出的是$變量名
? ? 5、腳本的命名格式:腳本名稱使用.sh結(jié)尾
? ? 6、腳本的起始行格式:第一行必須寫(xiě)# !/bin/bash
? ? 7、執(zhí)行腳本兩種方式:./a.sh? ? ? ? sh a.sh
? ? 8、、腳本輸入輸出格式
? ? ? ? ? ? (1)輸入語(yǔ)句用:read-p"描述"
? ? ? ? ? ? (2)Shell輸出值:echo$變量名
? ? 9、腳本的調(diào)用
? ??????????方式1:./腳本名.sh(權(quán)限的問(wèn)題)
????????????方式2: sh 腳本名.sh
? ? 10、參數(shù)傳遞
? ? ? ?(1) $1:接收第一個(gè)參數(shù)~~$n
? ? ? ?(2)$n: 文件名稱
? ? ? ?(3)$@: 所有參數(shù) s
? ? ? ?(4)$#: 參數(shù)個(gè)數(shù)? $0
? ? 11、比較運(yùn)算符和邏輯運(yùn)算符
? ??????(1)比較運(yùn)算符(數(shù)字)
????????????-eq 比較是否相等equal
????????????-ne 比較不相等? ? ? ? ? not????equal
????????????-gt 比較大于? ? ? ? ? ? greater than
????????????-ge? 比較大于等于? ? ? greater????equal
????????????-lt? 比較小于? ? ? ? ? less than
????????????-le? 比較小于等于? ? ? less????equal
? ???????(2)比較運(yùn)算符(字符串)
????????????????==? 比較是否相等
????????????????!=? 比較不相等
? ????????(3)邏輯運(yùn)算符?
? ? ? ? ? ? ? ? ? ? (1)-a 邏輯與? ? ? (2)-o邏輯或? ? ? (3)!邏輯非
二、if語(yǔ)句
? ? ? ? ? ? (1)單條件語(yǔ)句格式:
? ?????????????????????? if [ 條件 ]
? ? ? ? ? ? ? ? ? ? ? ? then
????????????????????????語(yǔ)句
????????????????????????else
????????????????????????語(yǔ)句
????????????????????????fi
? ? ? ? 注意點(diǎn):1: if后面有空格,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2:條件兩邊有空格,
????????????????????????????????3:if條件里面存在變量,需要$,而且變量?jī)蛇呅枰p引號(hào),
????????????????????????????????4:fi是結(jié)束標(biāo)識(shí)
? ? ? ? ? (2)多條件語(yǔ)句格式:
? ??????????????????????????????????????????if [ 條件 ]
????????????????????????????????????????????then
????????????????????????????????????????????語(yǔ)句
????????????????????????????????????????????elif [ 條件 ]
????????????????????????????????????????????then
????????????????????????????????????????????語(yǔ)句
????????????????????????????????????????????......
????????????????????????????????????????????else
????????????????????????????????????????????語(yǔ)句
????????????????????????????????????????????fi
三、case規(guī)則
? ?(1)格式:
? ??????????????????case $變量名 in
????????????????????"值")
????????????????????語(yǔ)句;;
????????????????????"值")
????????????????????語(yǔ)句;;
????????????????????.....
????????????????????esac
注意點(diǎn):1:case這第一行以in結(jié)尾?
????????????????2:值可以是字符串也可以是數(shù)字, 如果數(shù)字范圍[0-9] ?
????????????????3:結(jié)束語(yǔ)句;;
????????????????4:esac結(jié)束標(biāo)志
四、For循環(huán)
? ? ? ? ? ? (1)格式:
? ??????????????????????????????for 變量 in 列表
????????????????????????????????do
????????????????????????????????語(yǔ)句
????????????????????????????????done
? ? 注意點(diǎn):done是結(jié)束標(biāo)志
五、While循環(huán)
? ? ? ? ? ? (1)格式:
? ??????????????????????????while [條 件 ]
? ????????????????????????? do
? ????????????????????????? 語(yǔ)句
? ????????????????????????? done
注意點(diǎn):??1: while后面有空格,?
????????????????2:條件兩邊有空格,?
????????????????3:while條件里面存在變量,需要$,而且變量?jī)蛇呅枰p引號(hào),?
????????????????4:done是結(jié)束標(biāo)識(shí)
六、Shell腳本的函數(shù)
? ? ? ? ? ? (1)定義格式:
? ??????????????????????????????????函數(shù)名(){代碼 }
????????????????????????????????????調(diào)用格式
????????????????????????????????????函數(shù)名
? ???????????注意點(diǎn):必須先定義一個(gè)函數(shù),然后再調(diào)用它???
? ? ? ? ? ? (2)函數(shù)中的參數(shù):使用$n來(lái)接收數(shù)據(jù)
? ? ? ? ? ? (3)函數(shù)中的返回值:Shell中函數(shù)中默認(rèn)存在返回值
? ? ? ? ? ? (4)查看函數(shù)的返回值:$?
注意點(diǎn):(1)如果沒(méi)有代碼錯(cuò)誤默認(rèn)返回值為0
????????????(2)有代碼錯(cuò)誤返回1
????????????(3)查看返回值內(nèi)容:$?