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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值