shell腳本需要掌握的內(nèi)容
主要標(biāo)識(shí)符
- #!/bin/sh 或者 #!/bin/bash 表示解釋此腳本的Shell程序
變量
變量命名(規(guī)則不多說(shuō)了伪窖,和普通語(yǔ)言沒(méi)有太大的差別,就是不要和關(guān)鍵字沖突)
使用變量苍姜,需要在變量前加 '$' 符號(hào),為了更加有效的區(qū)分變量可以在變量的前后添加大括號(hào)'{' 和 ‘}’剂桥。比如
echo "hello $nameA"
妻柒,如果變量是name的話這句話就會(huì)識(shí)別為nameA為變量封恰,所以可以修改為echo "hello ${name}A"
矮烹。readonly變量
name="hello"
readonly name
- delete變量
unset name
不能刪除 只讀變量
字符串
單引號(hào)(用法限制很多):原樣輸出越庇,變量無(wú)效;里面的單引號(hào)用轉(zhuǎn)義字符也無(wú)效奉狈;
雙引號(hào)(用法不同:可以用變量卤唉;可以有轉(zhuǎn)義字符
不用引號(hào)(習(xí)慣使用雙引號(hào)就行)
拼接字符串:不需要任何‘+’符號(hào)
字符串長(zhǎng)度:
var="1234" echo ${#var}
截取字符串:
var="0123456 echo ${var:1:3}
輸出為 123(從1開(kāi)始截取3個(gè)字符)
數(shù)組
直接使用括號(hào) ‘(’ ')' 表示,元素用空格分開(kāi)
var_array=(value1 value2 value3)
或者使用:
var_array[0]= ; var_array[3]=; var_array[n]=;
使用 '@'或者‘’ 訪問(wèn)所有元素 ${var_array[*]} , ${var_array[@]}
參數(shù)的使用
參數(shù)在腳本的使用中是非常重要的內(nèi)容
$# 表示參數(shù)的個(gè)數(shù)
$* 所有的參數(shù)按照 $1 $2 $3 組合起來(lái)
$$ 腳本運(yùn)行的當(dāng)前進(jìn)程ID
$n 表示第n個(gè)參數(shù)(從1開(kāi)始)
運(yùn)算
算術(shù)運(yùn)算
-
使用表達(dá)式 expr 來(lái)計(jì)算結(jié)果:其中要用 '
' 反引號(hào)包圍仁期,如
`expr 1 + 1` `,其中數(shù)字和運(yùn)算符之間要用空格隔開(kāi)桑驱。支持加法
+
減法-
乘法\*
除法\
mod%
相等[ $a == $b ]
不相當(dāng)[ $a != $b ]
-
關(guān)系運(yùn)算:檢測(cè)兩個(gè)數(shù)之間的關(guān)系
-eq
等于-ne
不等于-gt
大于-lt
小于-ge
大于等于-le
小于等于 -
布爾運(yùn)算
!
非-o
或-a
與 -
邏輯運(yùn)算符
邏輯AND
&&
邏輯OR||
浮點(diǎn)數(shù)運(yùn)算
字符串運(yùn)算
- 檢測(cè)字符串是否相等
=
比如 [ $a = $b ] - 檢測(cè)字符串不相同
!=
比如 [ $a != $b ] - 檢測(cè)長(zhǎng)度是否為0
-z
為0 返回true-n
非0返回true - 檢查字符串s是否為空,
[ $str ]
不為空返回true
文件測(cè)試運(yùn)算符
方法/函數(shù)
function funname()
{
// visit the first parameter
$1
// visit the second parameter
$2
}
// call the function
funname $p1 $p2
程序邏輯
判斷邏輯
- if
if condition
then
command1
command2
...
commandN
fi
- if else
if condition
then
command1
command2
...
commandN
else
command
fi
- if else if else
if condition1
then
command1
elif condition2
then
command2
else
commandN
fi
循環(huán)邏輯
- for 循環(huán)
for var in item1 itme2....
do
done
- while
while condition
do
done