Shell腳本
? ? 第一行必須寫? ? #!/bin/bash
? ? vim 編輯
? ? 執(zhí)行:? ? ? ? ./文件名? ? ? ? sh 文件名
? ? chmod? 777 文件名? ? ? ? 修改文件權(quán)限
定義變量規(guī)則:
變量名=值? ?
shell定義變量的規(guī)則:
1: 等號(hào)兩邊不能有空格
2:定義特殊的變量需要用單引號(hào)或者雙引號(hào)結(jié)合
3:定義linux命令需要用反單引號(hào)
區(qū)分:
雙引號(hào)中有$變量名巾乳,輸出的是變量名對(duì)應(yīng)的變量值
單引號(hào)中有$變量名葬项,輸出的是$變量名
命名格式:腳本名稱用 . sh
腳本輸入輸出格式:
輸入語句用:read-p"描述"
Shell輸出值:echo$變量名
參數(shù)傳遞:
$1:接收第一個(gè)參數(shù)~~$n
$n: 文件名稱
$@: 所有參數(shù) s
$#: 參數(shù)個(gè)數(shù)? $0
比較運(yùn)算符
1比較運(yùn)算符(數(shù)字)
-eq 比較是否相等equal
-ne 比較不相等? ? ? ? ? notequal
-gt 比較大于? ? ? ? ? ? greater than
-ge? 比較大于等于? ? ? greaterequal
-lt? 比較小于? ? ? ? ? less than
-le? 比較小于等于? ? ? lessequal
2計(jì)較運(yùn)算符(字符串)
== 比較是否相等
!=? 比較不相等
加一操作 : ((i++))((i+=1))
加n操作 : s=$(($s+$i))s=$[$s+$i]((s=$s+$i))
3邏輯運(yùn)算符
-a 邏輯與 -o邏輯或 !邏輯非
if語句
格式: if [ 條件 ]
? ? ? ? ? ? ?then
? ? ? ? ? ? ?語句
? ? ? ? ? ? ?else
? ? ? ? ? ? ?語句
? ? ? ? ? ? ?fi
多條件:if [ 條件 ]
????????????????then
????????????????語句
????????????????elif [ 條件 ]
????????????????then
????????????????語句
????????????????......
????????????????else
????????????????語句
????????????????fi
case規(guī)則:
格式:case $變量名 in
????????????"值")
????????????語句;;
????????????"值")
????????????語句;;
????????????.....
????????????esac
注意:1、case這第一行以in結(jié)尾
? ??????????2征懈、值可以是字符串也可以是數(shù)字阱当, 如果數(shù)字范圍[0-9]?
? ??????????3俏扩、結(jié)束語句;;
? ??????????4、esac結(jié)束標(biāo)志
for循環(huán)
格式:for 變量 in 列表
????????????do
????????????語句
????????????done
數(shù)量過多時(shí)不能全列出來時(shí):
? ??for i in `seq 1 2 100`
????do
????echo $i
????done
注意:in之后的 ` 內(nèi) seq mix step max
? ??????????mix 開始數(shù)據(jù) step:間隔 max 結(jié)束數(shù)據(jù)弊添,如果step為1录淡,可以省略,需要用反單引號(hào)油坝,seq語句標(biāo)志
While循環(huán)
? ? 格式:? ??while [條 件 ]
? ? ????????????????????do
? ? ????????????????????語句
? ? ????????????????????done
? ??注意:1嫉戚、 while后面有空格
? ??????????????2、條件兩邊有空格
? ??????????????3澈圈、while條件里面存在變量彬檀,需要$,而且變量?jī)蛇呅枰p引號(hào)
? ??????????????4、done是結(jié)束標(biāo)識(shí)
Shell腳本的函數(shù)
? ? 格式:函數(shù)名(){代碼 }
????????????????調(diào)用格式
????????????????函數(shù)名
? ??函數(shù)中的參數(shù)使用$n來接收數(shù)據(jù)
? ? 函數(shù)中的返回值:Shell中函數(shù)默認(rèn)存在返回值? ? 查看返回值是$瞬女?
? ?如果沒有代碼錯(cuò)誤默認(rèn)返回值為0
? ?有代碼錯(cuò)誤返回1