20.5 shell脚本中的逻辑判断 20.6 文件目录属性判断 20.7 if特殊用法 20.8/20.9 case判断

20.5 shell脚本中的逻辑判断
20.6 文件目录属性判断
20.7 if特殊用法

20.8/20.9 case判断 


shell脚本中的逻辑判断

示例:第一种写法

if(如果)then(然后)fi

#!/bin/bash
a=5 b=6      ---设置变量
if [ $a -gt $b ]    ---如果a大于B
then  ----然后
echo ok   ----输入ok
fi     ----结束
if [ $a -lt $b ]   --如果a小于b
then  ----然后
echo no   ----输入no

fi  



第二种写法:

if(如果)then(然后);elif(如果)else(当if条件不满足就执行else)fi

#!/bin/bash
a=8      
if [ $a -gt 50 ]
then
echo ">5"
elif [ $a -lt 5 ]      --2次判断
then
echo "<5"
else                    --当if语句不符合,则运行else
echo "no man zu"

fi



3种写法:

if......;then.......;fi

if.....;then......else....fi

if.....then.....elif.....else..fi

逻辑判断表达式

-ne —比较两个参数是否不相等
-lt —小于
-le —小于等于
-gt —大于

-ge —大于等于

-eq  等于

&&并且      ||或者    ---- if 【 】 &&【】;then   结合判断


文件目录属性判断

举个例子:

#!/bin/bash
f=/tmp/123.txt    --设置变量
if [ -f $f ]         ---判断f变量是否是普通文件,且存在
then
echo $f cunzai            --存在则显示cunzai
else
touch $f                      ---没有则touch一个

fi


按照上面的,我们只需要修改变量即可

其他写法:

#!/bin/bash
f=/tmp/123.txt    --设置变量
if [ !-f $f ]   ----如果这个文件不存在  !取反
then
touch   $f

fi


 if特殊用法

-z示例:如果z的值为空,则报错not found (前面加个!是取反)




grep结合if示例

-q 过滤root以外的   -w精准匹配  

如果root存在就输入存在



case判断 

格式:在case程序中,可以再条件中使用  | ,表示或的意思

case 变量名  in

                value1)                        ---第一个判断

                        command

                            ;;

                value2)                        ---第二个判断

                          command

                            ;;

                *)                                 --除此之外

                          command

                            ;;

                           esac


示例:

#!/bin/bash
read -p "Please input a number: " n        ---让用户输入数字,返回值为n
if [ -z "$n" ]                                                --返回的n值进行判断
then                                                            
    echo "Please input a number."                --提示请输入值
    exit 1                                                        --当用户运行完脚本运行echo$? 的时候会返回1
fi


n1=`echo $n|sed 's/[0-9]//g'`                        --输出是否为纯数字,如果是数字,则清空,赋值给$n1,

if [ -n "$n1" ]                                                    --判断$n1是否为空(即$n1不是纯数字),

then
 echo "Please input a number."                    --为空再次提示输入数字
 exit 1                                                              --退出
fi

if [ $n -lt 60 ]&& [ $n -ge 0 ]                             ---当数值小于60 且大于等于0  提示tag1
then
    tag=1
elif [ $n -ge 60 ] && [ $n -lt 80 ]   ---当数值大于等于60并且小于80    提示tag2
then
    tag=2
elif [ $n -ge 80 ]  && [ $n -lt 90 ]        ---当数值大于等于80且小于90   提示tag3
then
    tag=3
elif [ $n -ge 90 ] && [ $n -le 100 ]        ---当数值大于等于90且小于100 提示tag4
then
    tag=4
else                                                       ---如果不符合上述条件则tag=0
    tag=0
fi
case $tag in                                    --当你的tag值为1/2/3/4、的时候执行如下
    1)
echo "not ok"                    ---tag1提示not ok 
        ;;
    2)
        echo "ok"                            --tag2提示 ok
        ;;
    3)
        echo "ook"                             -tag3提示 ook
        ;;
    4)
        echo "oook"                            ---tag4提示 oook
        ;;
    *)                                                --除此之外的执行tag=0
        echo "The number range is 0-100."                --提示重新输入数值范围为0-100
        ;; 

esac


执行结果100


执行结果101:提示不在此范围


执行过程


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值