Linux九阴真经之无影剑残卷9(Shell脚本编程进阶)
Shell脚本编程进阶
条件选择if语句
选择执行:
注意:if语句可嵌套
单分支
if 判断条件;then
条件为真的分支代码
fi
双分支
if 判断条件; then
条件为真的分支代码
else
条件为假的分支代码
fi
多分支
if 判断条件1; then
条件为真的分支代码
elif 判断条件2; then
条件为真的分支代码
elif 判断条件3; then
条件为真的分支代码
else
以上条件都为假的分支代码
fi
逐条件进行判断,第一次遇为“真”条件时,执行其分支,而后结束整个if语句
例:请输入一个年龄数字,系统会提示相应的提示语
[root@laobai ~#vim bitch.sh
测试一下结果
[root@laobai ~#bash bitch.sh Please input your age:22 good good work [root@laobai ~#bash bitch.sh Please input your age:33 good good work [root@laobai ~#bash bitch.sh Please input your age:66 free your life [root@laobai ~#bash bitch.sh Please input your age:666 are you people?
If示例
根据命令的退出状态来执行命令
if ping -c1 -W2 station1 &> /dev/null; then
echo 'Station1 is UP' elif grep "station1" ~/maintenance.txt &> /dev/null
then
echo 'Station1 is undergoing maintenance‘
else echo 'Station1 is unexpectedly DOWN!' exit 1
fi
条件判断:case语句
case 变量引用 in
PAT1)
分支1
;;
PAT2)
分支2
;;
...
*)
默认分支
;;
esac
case支持glob风格的通配符:
*: 任意长度任意字符
?: 任意单个字符
[ ]:指定范围内的任意单个字符
a|b: a或b
例:编写脚本/root/bin/yesorno.sh,提示用户输入yes或no,并判断用户输入的是yes还是no,或是其它信息
[root@laobai ~#vim esac.sh
我们来测试一下结果,成功!
[root@laobai ~#bash esac.sh are you agree?yes or no: Please input you answer [root@laobai ~#bash esac.sh are you agree?yes or no: y your answer is yes
循环
分三种: for, while, until
for 循环
for + 变量名(前面不加$) in + 列表;do
循环体
done 结束
执行机制:
依次将列表中的元素赋值给“变量名”; 每次赋值后即执行一次循环体; 直到列表中的元素耗尽,循环结束
例:创建numiber1-numiber10的文件
[root@laobai ~#for name in {1..10} ;do echo the numiber is $name ;done the numiber is 1 the numiber is 2 the numiber is 3 the numiber is 4 the numiber is 5 the numiber is 6 the numiber is 7 the numiber is 8 the numiber is 9 the numiber is 10
或者 也可以用seq 1..3..10 在命令里则需要 加上 ` `
[root@laobai ~#for name in {1..10..4} ;do echo the numiber is $name ;done the numiber is 1 the numiber is 5 the numiber is 9
也可以匹配命令
[root@laobai ~#for num in `ls /boot`;do echo the file is $num ; done the file is config-2.6.32-696.el6.x86_64 the file is efi the file is grub the file is initramfs-2.6.32-696.el6.x86_64.img the file is lost+found the file is symvers-2.6.32-696.el6.x86_64.gz the file is System.map-2.6.32-696.el6.x86_64 the file is vmlinuz-2.6.32-696.el6.x86_64
例:用 for 循环 计算 1到100 之和
[root@centos7 ~]#vim sum.sh
给与执行权限,进行测试
[root@centos7 ~]#chmod +x sum.sh [root@centos7 ~]#bash sum.sh jia=5050
成功。
例:判断系统内是否有user21-user25的账号,如果没有则创建,密码为magedu
[root@centos7 ~]#vim us.sh
我们来测试一下
[root@centos7 ~]#bash us.sh user21 add scussfor user22 add scussfor user23 add scussfor user24 add scussfor user25 add scussfor
成功!
例:写一个脚本ping一个IP地址,ping通提示net is up ping不通提示 net is down
[root@centos7 ~]#vim ping.sh
里面加了{},表示并行执行,能提升效率。我们测试一下
成功
例:ping10个192.168.2/24网段的IP地址,把UP和down的数量记录下来
[root@centos7 ~]#vim ping.sh
执行一下
如果循环里有变量,则会出现一下效果
可以在 echo 前 加一个“eval” ,此命令先将$n变成10,然后再执行这个循环脚本
例:打印一个随机颜色的等腰三角形,用*号组合
例:打印 9x9 乘法表
(将$i 和 $j 换个位)
例:在/testdir目录下创建10个html文件,文件名格式为数字N(从1到10)加随机8个字母,如:1AbCdeFgH.html
或者
while 循环
while循环用于不知道循环次数的时候使用,维持循环的是一个条件表达式,条件为真的时候,继续执行循环体,当条件为假时,终止循环体。
格式
while 循环控制条件;do
循环体
done
循环控制条件:进入循环之前,先做一次判断;每次循环之后会再次做判断,当条件为true时,继续循环,直到条件为false 时 终止循环。
例:利用while循环,定义变量i=1,sum的值为0 ;条件是1-100之间。当 i 的值小于等于100时都执行并循环,并让变量i每执行一次循环+1,直到100时停止循环,得出1到100的数字相加之和
执行一下,成功。
[root@centos7 ~]#bash while.sh sum=5050
转载于:https://www.cnblogs.com/huxiaojun/p/9009379.html
Linux九阴真经之无影剑残卷9(Shell脚本编程进阶)相关推荐
- Linux九阴真经之无影剑残卷7(进程管理)
进程概念 内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等 Process: 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被 ...
- Linux九阴真经之无影剑残卷14(文本三剑客之awk)
awk awk是一个报告生成器,它拥有强大的文本格式化能力,这是专业术语. 你可能不理解所谓的所谓的报告生成器中的"报告"是什么?你可以吧"报告"理解为报表或者 ...
- Linux九阴真经之无影剑残卷2(磁盘存储和文件系统)
一.磁盘简介 计算机的外部存储器中也采用了类似磁带的装置,比较常用的一种叫磁盘,将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失. 1.硬盘的chs模式 是指c ...
- linux脚本编程有参函数,shell脚本编程进阶:函数
一.函数介绍 函数function是由若干条shell命令组成的语句块,实现代码重用和模块化编程: 它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell程序的一 ...
- Linux命令行与shell脚本编程大全:第2版
<Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...
- 《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf
下载地址:网盘下载 内容简介 · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shel ...
- 《linux命令行与shell脚本编程大全》第三版 - 核心笔记(3/4):函数与图形化脚本
<linux命令行与shell脚本编程大全> 全书4部分: ☆ [1]linux命令行(1-10章) ☆ [2]shell脚本编程基础(11-16章) ☆ [3]高级shell脚本编程(1 ...
- 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-汇总 ( Chapter1-Chapter16 )
一.初识 Linux shell Linux 系统可划分为以下 4 部分. Linux 内核 GNU 工具 图形化桌面环境 应用软件 内核主要负责以下 4 种功能. 系统内存管理 内核通过硬盘上称为交 ...
- linux 命令行与shell脚本编程大全
linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失. 第二章 第三章 1.man手 ...
最新文章
- 2018/8/24阅读文献 A Unified Model for Multi-Objective Evolutionary Algorithms with Elitism
- iOS 11.3立春后发布,电量用得快的人千万别升级!
- vscode 运行html服务器运行_如何在vscode中调用浏览器运行html?
- 计算机猜数游戏matlab,MATLAB课程设计报告猜数游戏设计
- ASP.NET+SQL创建存储过程
- 第三节: Quartz.Net五大构件之Scheduler(创建、封装、基本方法等)和Job(创建、关联等)
- LeetCode 419. 甲板上的战舰
- 由汉诺塔引起的对递归的思考
- JZOJ 3455. 【NOIP2013模拟联考3】库特的向量(code)
- 关于笔记本使用的几点注意事项
- 男人想要成功--必须明白的22个道理
- mysql中主键数据类型_MySQL系列-详解mysql数据类型
- 【竞赛02-a】【题解】第十二届电工杯全国大学生数学建模大赛B题
- 智慧水务智慧管网安全检测系统解决方案
- 自动刷新网页代码(可多个网页)
- 448. Find All Numbers Disappeared in an Array -- Python
- java计算机毕业设计疫情期间高校师生外出请假管理系统录屏源代码+系统+数据库+lw文档
- 鬼泣模仿秀01——Unity3D实现类似鬼泣的蓄力攻击(C#)
- 巡逻机器人(Patrol Robot, Uva1600)
- 数组(一维数组,二维数组)