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脚本编程进阶)相关推荐

  1. Linux九阴真经之无影剑残卷7(进程管理)

    进程概念 内核的功用:进程管理.文件系统.网络功能.内存管理.驱动程序.安全功能等 Process: 运行中的程序的一个副本,是被载入内存的一个指令集合 进程ID(Process ID,PID)号码被 ...

  2. Linux九阴真经之无影剑残卷14(文本三剑客之awk)

    awk awk是一个报告生成器,它拥有强大的文本格式化能力,这是专业术语. 你可能不理解所谓的所谓的报告生成器中的"报告"是什么?你可以吧"报告"理解为报表或者 ...

  3. Linux九阴真经之无影剑残卷2(磁盘存储和文件系统)

    一.磁盘简介 计算机的外部存储器中也采用了类似磁带的装置,比较常用的一种叫磁盘,将圆形的磁性盘片装在一个方的密封盒子里,这样做的目的是为了防止磁盘表面划伤,导致数据丢失. 1.硬盘的chs模式 是指c ...

  4. linux脚本编程有参函数,shell脚本编程进阶:函数

    一.函数介绍 函数function是由若干条shell命令组成的语句块,实现代码重用和模块化编程: 它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell程序的一 ...

  5. Linux命令行与shell脚本编程大全:第2版

    <Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...

  6. 《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf

    下载地址:网盘下载 内容简介  · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shel ...

  7. 《linux命令行与shell脚本编程大全》第三版 - 核心笔记(3/4):函数与图形化脚本

    <linux命令行与shell脚本编程大全> 全书4部分: ☆ [1]linux命令行(1-10章) ☆ [2]shell脚本编程基础(11-16章) ☆ [3]高级shell脚本编程(1 ...

  8. 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-汇总 ( Chapter1-Chapter16 )

    一.初识 Linux shell Linux 系统可划分为以下 4 部分. Linux 内核 GNU 工具 图形化桌面环境 应用软件 内核主要负责以下 4 种功能. 系统内存管理 内核通过硬盘上称为交 ...

  9. linux 命令行与shell脚本编程大全

    linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失. 第二章 第三章 1.man手 ...

最新文章

  1. 2018/8/24阅读文献 A Unified Model for Multi-Objective Evolutionary Algorithms with Elitism
  2. iOS 11.3立春后发布,电量用得快的人千万别升级!
  3. vscode 运行html服务器运行_如何在vscode中调用浏览器运行html?
  4. 计算机猜数游戏matlab,MATLAB课程设计报告猜数游戏设计
  5. ASP.NET+SQL创建存储过程
  6. 第三节: Quartz.Net五大构件之Scheduler(创建、封装、基本方法等)和Job(创建、关联等)
  7. LeetCode 419. 甲板上的战舰
  8. 由汉诺塔引起的对递归的思考
  9. JZOJ 3455. 【NOIP2013模拟联考3】库特的向量(code)
  10. 关于笔记本使用的几点注意事项
  11. 男人想要成功--必须明白的22个道理
  12. mysql中主键数据类型_MySQL系列-详解mysql数据类型
  13. 【竞赛02-a】【题解】第十二届电工杯全国大学生数学建模大赛B题
  14. 智慧水务智慧管网安全检测系统解决方案
  15. 自动刷新网页代码(可多个网页)
  16. 448. Find All Numbers Disappeared in an Array -- Python
  17. java计算机毕业设计疫情期间高校师生外出请假管理系统录屏源代码+系统+数据库+lw文档
  18. 鬼泣模仿秀01——Unity3D实现类似鬼泣的蓄力攻击(C#)
  19. 巡逻机器人(Patrol Robot, Uva1600)
  20. 数组(一维数组,二维数组)

热门文章

  1. mac android 同步到iphone6,8个互通功能让Mac与iPhone组合无懈可击
  2. Typora收费后我换了个Markdown编辑器(Marktext)
  3. 对金融领域而言,联邦学习的实际价值是如何体现的?
  4. 微信卡券跳转小程序遇到的小坑
  5. 沉思录| Kotlin的「丑与美」,以及「最佳实践」
  6. 2021-08-18王道 数据结构 p90 第2题
  7. 能翻译维吾尔语的软件有哪些?这几个可以用用看
  8. iOS 生成通用 OpenSSL 库
  9. webbench的简单使用
  10. 备份MBR让PGP与windows+linux双系统和平相处(by quqi99)