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

 

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