shell的执行流控制
一、for循环
for 定义变量
do 使用变量,执行动作
done 结束标志格式1:
#!/bin/bash
for WESTOS in `seq 2 2 10`
doecho $WESTOS
done格式2:
for WESTOS in 1 2 3
doecho $WESTOS
done格式3:
for WESTOS in {10..1}
doecho $WESTOS
done格式4:
for ((WESTOS=0;WESTOS<10;WESTOS++))
doecho $WESTOS
done
脚本练习:
check_host.sh
用此脚本检测10台与您当前主机直连主机是否网络通常
如果网络通常请显示主机的ip列表
#!/bin/bash
for IP in {1..10}
doping -w 1 -c 1 172.25.254.$IP &> /dev/null &&{echo 172.25.254.$IP
}
done
验证:
二、 while
while true #条件为真
do #条件成立所作循环动作done3.until
until false ##条件为假
do#条件不成立所作循环动作done
三、until
until false ##条件为假
do#条件不成立所作循环动作done
四、if
if
then
elif
then
...
else
fi
脚本练习:
check_file.sh
please input filename: file
file is not exist
file is file
file is direcory
此脚本会一直询问直到用户输入exit为止
#!/bin/bash
while true
doread -p "Please input file: " FILE
if [ "$FILE" = "exit" ]
thenexit
elif [ ! -e "$FILE" ]
thenecho $FILE is not exist
elif [ -L "$FILE" ]
thenecho $FILE is link file
elif [ -f "$FILE" ]
thenecho $FILE is common file
elif [ -d "$FILE" ]
thenecho $FILE is direcory
fi
done
五、case
case $1 inword1|WORD1)action1;;word2|WORD2)action2;;*)action3
esac
脚本练习
system_watch.sh disk memory upload (每秒显示)
disk 监控磁盘使用情况
memory 监控内存使用情况
upload 监控启动负载
#!/bin/bash
case $1 indisk|DISK)
watch -tn 1 df -H;;memory|MEMORY)
watch -tn 1 free -m;;upload|UPLOAD)
watch -tn 1 uptime;;*);;echo "please input"
esac
六、 expect
问题脚本
#!/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? " OKecho $NAME is $AGE\'s old study $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 FEEL [ lindex $argv 3 ]
spawn /mnt/ask.sh
expect {"name" { send "$NAME\r";exp_continue }"old" { send "$AGE\r";exp_continue }"objective" { send "$OBJ\r";exp_continue }"ok" { send "$FEEL\r" }
}
expect eof
验证:
脚本练习
auto_ssh 172.25.254.1 westos
可以自动连接目标主机当目标主机网络不通时报错
#!/bin/bash
AUTO_SSH()
{
/usr/bin/expect <<EOF
spawn ssh root@$1
expect {
"yes/no" { send "yes\r";exp_continue }
"password:" { send "westos\r" }
}
expect eof
EOF
}
ping -c1 -w1 172.25.254.1 &> /dev/null && {AUTO_SSH 172.25.254.1
}||{
echo connect to host 172.25.254.1 port 22: No route to host
}
七、break,continue,exit
contiue | 终止当此次前循环提前进入下个循环 |
break | 终止当前所在语句所有动作进行语句外的其他动作 |
exit | 脚本退出 |
shell的执行流控制相关推荐
- shell中的执行流控制
shell中的执行流控制 1 for语句 1.1 作用及语句结构 1.2 for语句的基本格式 2 条件语句 2.1 while...do 2.2 until...do 2.3 if语句 2.4 ca ...
- 执行远程linux命令,linux shell 远程执行命令
经常要部署多台服务器上面的应用,如果一个个机器的登录太麻烦. 所有就想到编写一个脚本来部署不同的服务器 前提条件: 配置ssh免登陆 如果不会的请参加我的另外一篇文章 http://blog.csdn ...
- shell中执行脚本并显示到终端和保存到日志文件中
我们知道,在shell中执行脚本会返回一定信息到终端屏幕上 ,但是有一些特殊情况,如以下情况: 1)显示到终端中 echo "abck" 以上在手动执行脚本中是可以的,如果是编写 ...
- apache php 执行shell,PHP执行普通shell命令流程解析
这里演示一些普通的shell命令 php执行shell命令,可以使用下面几个函数: string system ( string $command [, int &$return_var ] ...
- shell脚本执行及配置文件
linux之shell脚本执行及配置文件 bash脚本执行方法: 1 解释器直接运行/usr/bin/bash bash FOO.sh2 使用路径运行脚本(需要有x权限)chmod +x FOO.sh ...
- runtime无法执行grep_让你的 Shell 命令执行可视化和告警
Sampler是一个用于shell命令执行,可视化和告警的工具.其配置使用的是一个简单的YAML文件. 1.为什么我需要它? 你可以直接从终端对任意动态进程进行采样 – 观察数据库中的更改,监控MQ动 ...
- shell shock 执行漏洞分析
该漏洞相关报道: http://www.freebuf.com/news/44805.html http://www.csoonline.com/article/2687265/application ...
- linux远程执行shell命令行,linux shell 远程执行命令--ftp
linux shell 远程执行命令--ftp 2018-12-07 ftp有很多命令,熟悉这些命令你能大大的提高工作效率: FTP命令行格式为: ftp -v -d -i -n -g [主机名] , ...
- 『SHELL』--SHELL脚本执行方式(转)
Shell脚本的执行方式: 注明:wd代表"脚本保存的目录" 1.fork 语法:/wd/shell.sh fork是最普通的, 就是直接在脚本里面用/wd/shell.sh来调用 ...
最新文章
- HDU1053 Entropy 哈夫曼树
- 吴恩达机器学习笔记 —— 7 Logistic回归
- SQLiteOpenHelper的实现
- MySQL使用sql备份文件恢复数据库
- ups计算软件_ups不间断电源系统分类及作用
- linux系统级别及特殊字符的意义
- C语言中static关键字详解
- 基于Rainbond开发Python云原生应用
- Node.js 线程你理解的可能是错的 1
- pandas 字符串切片后保存_Pandas时间序列基础详解(转换,索引,切片)
- matlab 无线仿真教学视频教程,视频教程 | MATLAB 及机电系统仿真
- Android趣味课程:超简单猜数游戏
- 【无人机学习】惯性导航系统简介
- 百度网盘打开显示读写权限不足
- XTDRONE:ego_planner三维运动规划
- 模拟电子技术之运算放大器
- 【降维打击】解决加密视频录屏问题
- Steam游戏信息爬取-热销榜价格好评率折扣评论
- 国际风筝节开幕 深圳大梅沙上演嫦娥奔月(图)
- WPF实现照片墙拼图展示特效
热门文章
- dederss.php美国与,Dede经验:全站rss/连载和分类首页模板替换
- Pandas与openpyxl库的 完美 融合!
- 一次打包,无限复用!教你用 PyCharm 搭建一劳永逸的开发环境
- 实现自己的轻量级http调用工具
- 超级棒的170+款web前端开发工具汇总,千万要收藏好!
- 从 6 万用户评论中,选出这 23 门全世界最好的 CS 免费课
- 我在 GitHub 上看到了一个丧心病狂的开源项目!
- boot lvm 分区_怎样使用kickstart创建逻辑卷管理(LVM)分区
- python scipy模块文档_scipy模块stats文档
- 浏览器内存不足导致页面崩溃_深度精读:浏览器渲染原理 [8000字图文并茂]