shell腳本寫作技巧

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章