shell的执行流控制

1.for语句

  • 作用
    为循环执行动作

  • for语句结构
    for 定义变量
    do 使用变量,执行动作
    done 结束标志

  • for语句的基本格式

  • 格式1
    #!/bin/bash
    for WESTOS in $(seq 1 2 10) #1到10步长为2
    do
    echo $WESTOS
    done
    在这里插入图片描述

  • 格式2
    for WESTOS in westos linux lee
    do
    echo $WESTOS
    sleep 1 #每循环一次休眠一秒
    done
    在这里插入图片描述

  • 格式3
    for WESTOS in {1…3}
    do
    echo $WESTOS
    sleep 1
    done
    在这里插入图片描述
    在这里插入图片描述

  • 格式4:类似于C语言的方式
    for ((WESTOS=0;WESTOS<10;WESTOS++))
    do
    echo $WESTOS
    sleep 1
    done
    在这里插入图片描述
    在这里插入图片描述

  • 脚本练习:
    check_host.sh
    用此脚本检测10台与您当前主机直连主机是否网络通畅
    如果网络通畅请显示主机的ip列表
    在这里插入图片描述

2.条件语句

(1) while…do语句

  • 作用:
    条件为真执行动作
  • 语句结构
    while ture #条件为真
    do #条件成立所作循环动作
    done #结束

(2) until…do语句

  • 作用
    条件为假执行动作
  • 语句结构
    until false #条件为假
    do #条件不成立所作循环动作
    done #结束

(3) if…then…elif…then…else…fi语句

  • 作用
    多次判定条件执行动作

  • 代码结构
    if #首次判断
    then #条件成立执行动作
    elif #当首次判定不成立时再次判定
    … #elif可以书写多次
    else #所有条件不成立执行动作
    fi #结束

  • 练习
    check_file.sh
    please input filename: file
    file is not exist
    file is file
    file is direcory
    此脚本会一直询问直到用户输入exit为止
    在这里插入图片描述在这里插入图片描述

3.case语句

case $1 in
word1|WORD1)
action1
;;
word2|WORD2)
action2
;;
*)
action3
esac

  • 练习
    system_watch.sh disk memory upload (每秒显示)
    disk 监控磁盘使用情况
    memory 监控内存使用情况
    upload 监控启动负载
    在这里插入图片描述
  • 测试
  • sh system_watch.sh disk
    在这里插入图片描述
  • sh system_watch.sh memory
    在这里插入图片描述
  • sh system_watch.sh upload
    在这里插入图片描述

4.expect

dnf install expect -y
问题脚本:
#!/bin/bash
read -p “what’s your name:” NAME
read -p “How old are you:” AGE
read -p “Which objective:” OBJ
read -p “Are you ok?” OK

echo $NAME is $AGE’s old stady $OBJ feel $OK

应答脚本:
#!/usr/bin/expect
set timeout 1
set NAME[ lindex $argv 0 ]
set AGE[ lindex $argv 1 ]
set OBJ[ lindex $argv 2 ]
set OK[lindex KaTeX parse error: Expected '}', got 'EOF' at end of input: … "name" {send "NAME\r";exp_continue}
“old” {send “KaTeX parse error: Can't use function '\r' in math mode at position 4: AGE\̲r̲";exp_continue}…OBJ\r”;exp_continue}
“ok” {send “$OK\r”;exp_continue}
}
expect eof

  • 脚本练习
    host_list.sh
    检测172.25.254.1-172.25.254.10网络是否开启
    如果网络正常请生成解析列表hosts_list

格式如下
ip 主机名称
例如:
172.25.254.1 westos_studen1.westos.org
在这里插入图片描述

5.break,continue,exit

continue #终止当此次前循环提前进入下个循环(跳出单次循环)
在这里插入图片描述在这里插入图片描述

break #终止当前所在语句所有动作进行语句外的其他动作(影响的是当前所在的循环)
在这里插入图片描述

在这里插入图片描述

exit #脚本退出
在这里插入图片描述在这里插入图片描述

$0返回值所表示的大概含义:
0 表示成功
2 权限拒绝
1~125 表示运行失败,脚本命令,系统命令错误或参数传递错误
126 找到该命令,但是无法执行
127 为找到要运行的命令
128 命令被系统强制结束

$0的返回值可以自己设定:
在这里插入图片描述在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值