1. 將if ...then..fi 寫在一行(相比多行寫,加了分號)
#!/bin/bash
fullpcapflag=0
if [ $fullpcapflag == 0 ]; then extraceinfo='fullpcap-enabled=0';
elif [ $fullpcapflag == 1 ]; then extraceinfo='fullpcap-enabled=1';fi
echo $fullpcapflag
root@RealEyeServerITS:~/lxj# ./1.sh
fullpcap-enabled=0
2. 定義並使用字典
#!/bin/bash
#必須先定義
declare -A DEFAULT_CONF_FILE
DEFAULT_CONF_FILE=([real]="/conf/ini/real.yaml"
[subo]="/conf/ini/subo.ini"
[manage]="/conf/ini/manage.ini"
#獲取所有key
echo ${!DEFAULT_CONF_FILE[*]}
#遍歷
for key in $(echo ${!DEFAULT_CONF_FILE[*]})
do
echo $key
echo ${DEFAULT_CONF_FILE[$key]}
done
root@RealEyeServerITS:~/lxj# ./1.sh
subo manage real
subo
/conf/ini/subo.ini
manage
/conf/ini/manage.ini
real
/conf/ini/real.yaml
有一個問題:
操作字典,只可以使用聲明的字典名;將字典名賦值給其他變量, 通過變量無法操作字典。
3. 註釋多行代碼
#!/bin/bash
#單行註釋用#
#echo "my name is Han MeiMei"
#多行註釋 :<<! !
:<<!
echo "hello"
echo "world"
!
echo "end"
root@RealEyeServerITS:~/lxj# ./1.sh
end
4. (())的使用
符合C語言運算規則的表達式,變量前不需要帶$
var=1
t=$((var=var+1)) #任何表達式
echo $t
((var++))
t=$((var*var)) #任何表達式
echo $t
t=$((var++)) #C語言運算
echo $t
for((i=0;i<5;i++));
do
echo $i
done
root@RealEyeServerITS:~/lxj# ./1.sh
2
4
0
1
2
3
4
9
5. [] 的使用
相當與test
字符串比較:只可以用 “==” “!=”, 不可用於整數比較
整數運算:只可以用eq,-gt,-le, --lt等, 不可用於字符串比較
無論字符串還是整數比較,都不可使用大於號、小於號
6.[[ ]]
1)支持模式匹配,支持通配符,字符串比較把右邊的左右模式,比如[[ “hello” == “hell?” ]],結果爲真
2)條件判斷,內部可以使用 && ,|| ,<, >
3) 使用 =~時,支持正則表達式,
4)字符串比較,整數比較,直接用"==" "!=" ">" "<"
#!/bin/bash
var="hello"
tvar="llo"
if [[ $var == *$tvar ]]
then
echo "var 包含 tvar"
fi
if [[ $var =~ $tvar ]]
then
echo "var 包含 tvar"
fi
root@RealEyeServerITS:~/lxj# ./1.sh
var 包含 tvar
var 包含 tvar
7. 流程控制
if ..else..fi語句
1)
if 條件判斷
then
fi
2)
if 條件判斷
then
else
fi
3)
if 條件判斷1
then
elif 條件判斷2
then
else
fi
for循環
for 控制語句
do
done
while 循環
while 條件判斷
do
done
until, 直到條件滿足停止循環
until condition
do
command
done
case
echo '輸入 1 到 4 之間的數字:'
echo '你輸入的數字爲:'
case $aNum in
1) echo '你選擇了 1'
;;
2) echo '你選擇了 2'
;;
3) echo '你選擇了 3'
;;
4) echo '你選擇了 4'
;;
*) echo '你沒有輸入 1 到 4 之間的數字'
;;
esac
輸入 1 到 4 之間的數字:
你輸入的數字爲:
3
你選擇了 3