| |
|
开发:
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
例如: for N in {1..10} do If [ “$N” = “4” ] then Echo luck number Return/break/exit/continue fi done echo end |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年12日历 | -2024/12/29 9:03:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |