IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Shell的执行流控制 -> 正文阅读

[系统运维]Shell的执行流控制

1.for语句

作用为循环执行动作

for语句的结构

for? ? ? ? 定义变量

do? ? ? ? 使用变量,执行动作

done? ? 结束标志

do和done之间的命令称为循环体,执行次数和列表中常数或字符串的个数相同。for循环,首先将in后列表的第一个常数或字符串赋值给循环变量,然后执行循环体,以此执行,最后执行done命令后的命令序列。sheel支持列表for循环使用略写的计数方式,1~5的范围用{1..5}表示(大括号不能去掉,否则会当作一个字符串处理)

for语句的四种基本格式

格式1:

#!/bin/bash

for WESTOS in $(seq 1 2 10)

do

? ? ? ? ? echo $WESTOS

done

编写for.sh脚本

执行此脚本,如下?

格式2

for? WESTOS in westos linux lee

do

? ? ? ? ? ? ?echo $WESTOS

done

?

?

?格式3

for? ?WESTOS in {10..1}

do

? ? ? ? ? ? ? echo $WESTOS

done

?

格式4

for??((WESTOS=0;WESTOS++))

do

???????????? echo $westos

done

2.条件语句

(1)while...do语句

1.先对true进行判断,如果该条件成立,就进入循环,执行 while 循环体中的语句,也就是 do 和 done 之间的语句。这样就完成了一次循环。

2.每次执行到 done 的时候都会重新判断true是否成立,如果成立,就进入下一次循环,继续执行 do 和 done 之间的语句,若不成立,则结束整个 while 循环,执行 done 后面的其它 Shell 代码。

3.若刚开始true 就不成立,则程序就不会进入循环体,do 和 done 之间的语句就不会执行。

注意:在 while 循环体中必须有相应的语句使得true越来越趋近于“不成立”,只有这样才能最终退出循环,否则 while 就成了死循环,会一直执行下去,永无休止。(如下例子:此脚本将会持续执行)while 语句和 if...else 语句中的 condition 用法都是一样的,你可以使用 test 或 [] 命令,也可以使用 (()) 或 [[]]。

条件为真执行动作

语句结构:

while ture? ? ? ?条件为真

do? ? ? ? ? ? ? ? ? ?条件成立所做的循环动作

done? ? ? ? ? ? ? ?结束

?

?

(2)until...do 语句

作用:提供循环执行,它与while循环相反, until循环将反复执行直到条件为真就结束循环,而while循环条件为假就结束循环。

语句结构

until false ??????条件为假

do? ? ? ? ? ? ? ? ? 条件为假执行动作

done? ? ? ? ? ? ? 结束

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

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

一.if的基本语法

1.if与 [(中括号)之间要有空格

2.[ ](中括号)与判断条件之间也必须有空格

3.[ ](中括号)与;(分号)之间不能有空格

二. 对字符串的判断

1.if [ str1=str2 ];then fi ????当两个字符串相同时返回真

2.if [ str1!=str2 ];then fi ???当两个字符串不相等时返回真

3.if [ -n str1 ];then fi ??????当字符串的长度大于0时返回真 (判断变量是否有值)

4.if [ -z str1 ];then fi ??????当字符串的长度为0时返回真

三.语句结构

if

then

elif

then

...

else

fi

?

(4)case语句

case $1 in

linux|LINUX|Linux)

echo westos

;;

westos|WESTOS|Westos)

echo linux

;;

*)

echo error

esac

?

?

(5)expect

expect是linux系统中用来实现自动化控制和测试的软件工具,可以把shell和expect理解为两种不同的脚本语言,expect有独自的语法、变量, 在实际工作中,我们运行命令、脚本或程序时,这些命令、脚本或程序都需要从终端输入某些继续运行的指令,而这些输入都需要人为的手工进行。而利用expect,则可以根据程序的提示,模拟标准输入提供给程序,从而实现自动化交互执行,例如执行shell脚本,需要从终端得到输入时(如ssh –l root ip),expect可以根据提示,模拟标准输入来实现交互脚本执行

例如:问题脚本

vim q.sh

#!/bin/bash

read -p "what's your name: " NAME

read -p "how old are you: " AGE

read -p "which subject your study: " OBJ

read -p "are you happy: " FEEL

echo $NAME is $AGE study $OBJ feel $FEEL

应答脚本

安装expect:dnf install expect -y

vim answer.exp

#!/usr/bin/expect

set timeout 2??? 等待2秒自动结束

set NAME [ lindex $argv 0 ]

set AGE [ lindex $argv 1 ]

set OBJ [ lindex $argv 2 ]

set FEEL [ lindex $argv 3 ]

spawn sh q.sh

expect {

"name" { send "$NAME\r";exp_continue }

"old" { send "$AGE\r";exp_continue }

"study" { send "$OBJ\r";exp_continue }

"happy" { send "$FEEL\r" }

}

expect eof(退出当前环境)或者(interact不退出当前环境)

?

运行测试?

?(6).break、continue、exit、return

contiue

终止当此次前循环提前进入下个循环

break

终止当前所在语句所有动作进行语句外的其他动作

exit

脚本退出

return

终止当前循环,退出当前所在的函数

例如:

for N in {1..10}

do

If [ “$N” = “4” ]

then

Echo luck number

Return/break/exit/continue

fi

done

echo end

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-21 21:52:42  更:2022-07-21 21:52:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 17:04:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码