条件测试 、 if选择结构 、 循环结构

Shell脚本的智能化

 

 

使Shell脚本获得识别能力

为命令的执行提供最直接的识别依据

-文件或目录的读/写等状态

-数值的大小

-字符串是否匹配

-多条件组合

 

test 测试操作

语法格式

-test 选项 参数

-[ 选项  参数 ]

 test a == a    #判断a是否等于a

echo #?     #查看结果

[ a==a ]   #另一种格式,效果同上,字符两边有空格

echo $?   #查看结果

 

字符串比较

[ 操作符 字符串 ]

操作符

-z  字符串的值为空

-n  字符串的值不为空

==  两个字符相同

!=  两个字符不相同

 

[ -z $a ]  #判断a是否是空值

echo $?  #查看结果

[ a==b ]     #判断a是否等于b

echo $?    #查看结果

 

逻辑组合

&&   成功后执行后面的

||  失败后执行后面的

 

当使用两个逻辑符号时:

&&   当有都成功则成功,才能执行

||   失败一个算失败,就执行

 

数字的条件测试

-eq  等于

-ne  不等于

-gt  大于

-ge  大于等于

-lt   小于

-le  小于等于

 

[ 10 -lt 10 ]  &&  echo "ok" || echo "no"

[ 10 -gt 11 ]  && echo "ok" || echo  "no"

 

----------------------------------------------------------------------------------------------

对文件进行测试

-e 文件是否存在

-d 文件是否存在,且是目录

-f 文件是否存在,且是普通文件

-r -w -x 是否有读,写,执行权限

 

[  -e /opt/1 ]    #测试文件是否存在

echo $?   #输出结果

 

使用if判断语句

 

1.单分支

if  条件测试:then

     执行指令1

     执行指令2

     ...

fi

应用示例

判断挂载点目录,若不存在则创建

 

2.双分支

if 条件;then

     执行指令1

     执行指令2

     ...

else

    执行指令3

    ...

fi

脚本应用

目标

  • 检测并判断指定的主机是否可ping通
  • 目标主机的地址以位置参数提供

 

3.多分支

if 条件1;then

     执行指令1

     执行指令2

     ...

elif 条件2;then

     执行指令3

     执行指令4

     ...

else

    执行指令n

fi

脚本应用

目标

  • 输入一个分数,判断成绩分档

 

 

 

if运用

判断IP通不通 

#! /bin/bash
ping -c 5 -i 0.5 -W 1 172.25.0.11
if [ $? -eq 0 ];then
   echo 通了
else
   echo  没通
fi
~          

 猜数字

#! /bin/bash
x=$[RANDOM%10]
read -p "请输入一个数字(0-9)" n
if [ $x -eq $n ];then
    echo "猜对了"
elif [ $n -lt $x ];then
    echo "猜小了$x"
else
    echo "猜大了$x"
fi

 

 

 

FOR循环

遍历/列表式循环

-根据变量的不同取值,重复执行命令序列

 

for 变量名 in 值列表

do

  命令序列

done

 

流程示意图

 

列表FOR循环

#!/bin/bash  
  
for varible1 in {1..5}  
#for varible1 in 1 2 3 4 5  
do  
     echo "Hello, Welcome $varible1 times "  
done  

C语言风格的for循环

-通过变量控制,条件成立时,循环

-步长可控次数
 

多次ping

#!/bin/bash
a=0
for i in {1..15}
do
   ping -c 3 -i 0.2 -W 1 172.25.0.$i &>/dev/null
if [ $? -eq 0 ];then
   echo 通了
   let a++
else
   echo 不通   
fi
done
echo 通了"$a"个

 

while循环,可以无限次循环

 

while 条件测试

do 

    指令

done 

while猜数字

#!/bin/bash
n=$[RANDOM%100]
a=0
b=1
while [ $a != $n ]
do
 read -p "请输入一个数0-100:" a
 if [ $a -eq $n ];then
  echo "猜中了是:$a"
 elif [ $a -ge $n ];then
  echo "$a猜大了:"
  let b++
 else
  echo "$a猜小了:"
  let b++
 fi
done
echo "你一共猜了$b次"

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值