shell if条件分支编程 --- shell脚本编程教程之三

数学运算:
vim math.sh
# a=1
# b=2
# c=$a+$2
或者
# c=$(($a+$b))
# echo $c

条件判断:
格式1:
if [ 条件 ]
then
    条件为真执行的任务
fi
格式2:
fi [ 条件 ]
then
    执行条件为真的任务
else
    执行条件为假
fi
格式2:
fi [ 条件1 ]
then
    条件1为真执行条件为真的任务
elif [ 条件2 ]
then
    条件2为真执行条件为假
else
    两个条件都不满足
fi

条件判断的书写
: ':'表示真
>     -gt   greater than
<     -lt   littler than
>=    -ge   greater equal
<=    -le   littler equal
==    -eq   equal
!=    -ne   not equal

|| && 的书写:
if [ $a -lt 10 ] && [ $a -gt 1 ] ==> if [ $a -lt 10 -a $a -gt 1 ]
then
    echo ok
fi

判断一个变量是否为空:
[ -z $? ]      判断执行结果是否为空
[ ! -z $? ]    判断执行结果是否为不为空
wc -l filename 判断文件的行数
# n=`wc -l 1.txt | awk '{print $3}'`       # 结果为空
# if [ $n -gt 30 ] ; then echo "ok" ; fi   # 命令出错 因为n为空
# if [ -z $n ] ;then echo "null" ; fi      # 判断是否为空


文件的判断:
[ -e 1.sh ]  是否存在
[ -f 1.sh ]  是否是文件
[ -d 1.sh ]  是否是目录
[ -r 1.sh ]  文件是否可读
[ -x 1.sh ]  文件是否可执行
[ -w 1.sh ]  文件是否可写


综合小例子:判断奇偶
vim elseDemo.sh

#!/bin/bash

read -p "请输入一个数字:" n
# n2=`echo $n|grep -c '[^0-9]'` # 根据过滤的结果 输出含有非数字的行数
# if [ $n2 -eq 1 ]
if echo $n | grep -q '[^0-9]'   # 用一条命令的返回值作为俄判断条件
then
    echo "请你输入的不是数字,请重新输入"
    exit 1
fi

n1=$[$n%2]

if [ $n1 -eq 0 ]
then
    echo "你输入的数字是偶数"
else
    echo "你输入的数字是奇数"
fi



给脚本中添加时间戳
exec :常用在脚本的开头 只针对exec下面的命令
exec > /tmp/log 2>&1 #将脚本输出信息重定向到/tmp/log里面

vim date.sh

#!/bin/bash

d=`date +%F`
exec > /tmp/$d.log 2>&1 #将脚本输出信息重定向到其他文件

echo "Begin on `date`"
ls /tmp/sasassa
cd /tmp/sasas
ls /root
echo "End at `date`"

case:
格式:
case $1 in
    start)
        执行程序1
        ;;
    stop)
        执行程序2
        ;;
    .....
    *)
        其他的都不存在
esac

在选项的下边可以使用活
case $1 in
    start|restart)      # 或者的关系
        执行程序1
        ;;
    stop)
        执行程序2
        ;;
    .....
    *)
        其他的都不存在
esac

case使用实例:
vim case.sh

#!/bin/bash

read -p "请输入一个数字: " n
n1=`echo $n | sed 's/[-0-9]//g'`      #可以负号的
if [ ! -z $n1 ]            # 判断是否是纯数字 如果是纯数字则为空
then
    echo "请输入一个纯数字"
    exit 1
# elif [ $n -lt 0 ] || [ $n -gt 100 ]
#then
#    echo "数字的范围0-100"
#    exit 2
fi

if [ $n -lt 60 ]
then
    tag=1
elif [ $n -ge 60 ] && [ $n -lt 80 ]
then
    tag=2
elif [ $n -ge 80 ] && [ $n -lt 90 ]
then
    tag=3
elif [ $n -ge 90 ] && [ $n -le 100 ]
then
    tag=4
fi


case $tag in
    1)
        echo "不及格"
        ;;    
    2)    
        echo "及各"
        ;;
    3)
        echo "良好"
        ;;
    4)
        echo "优秀"
        ;;
    *)
        echo "不在0-100范围"
        ;;
esac



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值