shell脚本编程学习笔记8——流程控制和循环

1,if语句

1,框架

1,单分支:if [条件判断式] ;thenprogramfiif [条件判断式]thenprogramfi注意:if语句使用fi结尾,和一般语言使用大括 号结尾不同 [ 条件判断式 ]就是使用test命令判断,所以中括号和条件判断式之间必须有空格 then后面跟符合条件之后执行的程序,可以放在[]之后,用“;”分割。也可以换行写入,就不需要“;”了 双分支if [condition]thenprogramelseprogramfi多分支if [condition]thenprogramelif [condition]then program......elseprogramfi

2,实例:

1,判断根分区使用率。根分区使用大于指定的值,则警告[root@iZwz9h901rvv69020rk7fsZ sh]# more dfh.sh #!/bin/bashrate=$(df -h | grep '/dev/xvda1' | awk '{printf $5 }' | awk 'BEGIN{FS="%"}{printf $1}');if [ $rate -gt 80 ]thenecho "warning,the used is $rate"fi[root@iZwz9h901rvv69020rk7fsZ sh]# 2,判断apache是否启动成功[root@iZwz9h901rvv69020rk7fsZ sh]# more apache.sh #!/bin/bashstatus=$(nmap -sT 127.0.0.1 | grep 'http' | grep 'tcp' | awk '{printf $2}')if [ "$status" == "open" ]thenecho "$(date) httpd is ok" >>/root/log/httpd.logelse/etc/rc.d/init.d/httpd start &> /dev/nullecho "$(date) restart httpd" >> /root/log/httpd.logfi[root@iZwz9h901rvv69020rk7fsZ sh]# 3,备份数据库[root@li1079-128 bash]# more backup_mysql.sh #!/bin/bashntpdate asia.pool.ntp.org &>/dev/nulldate=$(date)size=$(du -sh /usr/local/mysql/)if [ -d /tmp/dbbak ]thenecho "Date:$date">>/tmp/dbbak/dbinfo.logecho "Size:$size">>/tmp/dbbak/dbinfo.logcd /tmp/dbbak/tar -zcvf mysql-lib-$date.tar.gz /usr/local/mysql/ &>/dev/nullelsemkdir /tmp/dbbakecho "Date:$date">>/tmp/dbbak/dbinfo.logecho "Size:$size">>/tmp/dbbak/dbinfo.logcd /tmp/dbbak/tar -zcvf mysql-lib-$date.tar.gz /usr/local/mysql/ &>/dev/nullfi[root@li1079-128 bash]# 4,判断去什么地方[root@iZwz9h901rvv69020rk7fsZ sh]# more duo.sh #!/bin/bashread -p "if you to guangzhou,please1\nif you go to shanghai,please2\nif you go to shenzhen,please3:" whereif [ "$where" -eq 1 ]thenecho "guangzhou"elif [ "$where" -eq 2 ]thenecho "shanghai"elseecho "shenzhen"fi[root@iZwz9h901rvv69020rk7fsZ sh]#

2,case语句

case语句和if…elif…else语句一样都是多 分支条件语句,不过和if多分支条件语句
不同的是,case语句只能判断一种条件关 系,而if语句可以判断多种条件关系case $var in"val1")program;;"val2")program;;......*)program;;
esac#!/bin/bash
#判断用户输入
read -p "Please choose yes/no: " -t 30 cho
case $cho in
"yes")
echo "Your choose is yes!"
;;
"no")
echo "Your choose is no!"
;;
*)
echo "Your choose is error!"
;;
esac

3,for循环

1,语法

for 变量 in 值1 值2 值3…  do   程序  donefor (( 初始值;循环控制条件;变量变化 ))  do   程序  done

2,实例

#!/bin/bash
#打印时间
for time in morning noon afternoon evening         do                 echo "This time is $time!"         done#!/bin/bash
#批量解压缩脚本
cd /lamp
ls *.tar.gz > ls.log
for i in $(cat ls.log)         do                 tar -zxf $i &>/dev/null         done
rm -rf /lamp/ls.log#!/bin/bash
# 从 1 加到 100
s=0
for (( i=1;i<=100;i=i+1 ))         do                 s=$(( $s+$i ))         done
echo "The sum of 1+2+...+100 is : $s" #!/bin/bash
#批量添加指定数量的用户
read -p "Please input user name: " -t 30 name
read -p "Please input the number of users: " -t 30 num
read -p "Please input the password of users: " -t 30 pass
if [ ! -z "$name" -a ! -z "$num" -a ! -z "$pass" ]         then         y=$(echo $num | sed 's/[0-9]//g')          if [ -z "$y" ]                 then                 for (( i=1;i<=$num;i=i+1 ))                         do                           /usr/sbin/useradd $name$i &>/dev/null            echo $pass | /usr/bin/passwd --stdin $name$i &>/dev/null        done         fi
fi

4,while和until循环

--while
简介:while循环是不定循环,也称作条件循环 。只要条件判断式成立,循环就会一直继续直到条件判断式不成立,循环才会停 止。这就和for的固定循环不太一样了
语法:while [ 条件判断式 ]  do   程序  done --until
简介:until循环,和while循环相反,until循环时只要条件判断式不成立则进行循环,并执 行循环程序。一旦循环条件成立,则终止循环。
语法:until [ 条件判断式 ]  do   程序  done实例:#!/bin/bash #从1加到100 i=1 s=0 while [ $i -le 100 ] # 如果变量 i 的值小于等于 100 , 则执行循环do                 s=$(( $s+$i ))                 i=$(( $i+1 ))         done echo "The sum is: $s" #!/bin/bash #从1加到100 i=1 s=0 until [ $i -gt 100 ] # 循环直到变量 i 的值大于 100 , 就停止循环do                 s=$(( $s+$i ))                 i=$(( $i+1 ))         done echo "The sum is: $s" 

shell脚本编程学习笔记8(XDL)——流程控制和循环相关推荐

  1. shell脚本编程学习笔记6(xdl)——字符串截取命令

    shell脚本编程学习笔记6--字符串截取命令 1,cut命令 [root@localhost ~]# cut [选项] 文件名-f 列号,表示提取第几列-d 分隔符,按照指定的分隔符分割列注意:默认 ...

  2. shell脚本编程学习笔记1(xdl)——shell基础与Bash基本功能()

    shell脚本编程学习笔记1--shell基础与Bash基本功能 1,简介: 1,Shell就是一个命令行解释器,用以连接输入设别和内核. 2,Shell是解 释执行的脚本语言,在Shell中可以直接 ...

  3. shell脚本编程学习笔记5(xdl)——正则表达式

    shell脚本编程学习笔记5--正则表达式 1,简介 正则表达式,用来在文件中匹配符合条件的字符串,包含匹配.注意是文件中选择字符串,和通配符是 不同的.grep,awk,sed等命令可以支持正则表达 ...

  4. shell脚本编程学习笔记2(xdl)——Bash变量

    shell脚本编程学习笔记2--Bash变量 1,变量简介 1,计算机内存单元2,设置规则字母数组下划线组成,不能以数字开头Bash中,默认类型字符串型,变量类型可修改 2,Bash变量规则 1,变量 ...

  5. shell脚本编程学习笔记4(xdl)——Bash常见环境变量

    shell脚本编程学习笔记4--Bash常见环境变量 非专业运维,例如开发人员,环境变量熟悉常见的,了解不常见的即可. 1,简介 环境变量配置文件中主要是定义对系统的 操作环境生效的系统默认环境变量, ...

  6. shell脚本编程学习笔记7(XDL)——字符处理命令和条件判断

    shell编程学习笔记--字符处理命令和条件判断 1,字符处理 [root@localhost ~]# sort [选项] 文件名 选项: -f: 忽略大小写 -n: 以数值型进行排序,默认使用字符串 ...

  7. shell脚本编程学习笔记3(xdl)——Bash变量的运算与测试

    Bash变量的运算与测试 1,数值运算和运算符 declare申明变量类型也就是说变量运算没有申明的时候,会以字符串形式的拼接, 只有把变量声明为数值型的时候才可以运算,申明变量为数值型有 三种方法方 ...

  8. Linux Shell脚本编程学习笔记和实战

    http://www.1987.name/141.html shell基础 终端打印.算术运算.经常使用变量 Linux下搜索指定文件夹下特定字符串并高亮显示匹配关键词 从键盘或文件里获取标准输入 [ ...

  9. shell脚本编程 学习笔记

    1.shell简介 1.1 什么是shell Shell 是一个命令行解释器,它为用户提供了一个向Linux内核发送请求以便运行程序的界面系统级程序,用户可以用Shell来启动.挂起.停止甚至是编写一 ...

最新文章

  1. 【C#实践】三层实例:登录过程
  2. npj Microbiomes|细菌群落的整体涌现特性诱导了拟南芥的干旱抗性(一作解读)
  3. ESP32开发板 V1.0.0 Rev1 wifi 蓝牙4MB FLASH MicroPython
  4. 解决debian apt-get upgrade 错误triggers ci file contains unknown directive `interest-noawait'
  5. 非常值得收藏的 IBM SPSS Modeler 算法简介
  6. blockchain 区块链200行代码:在JavaScript实现的一个简单的例子
  7. jquery插件 autoComboBox 自动创建联动的下拉框 如:省市区联动
  8. 物联网云平台的建设将覆盖全领域
  9. 解决eclipse端口被占用的问题
  10. [待总结]注册软件常用注册方法
  11. JavaScript比较是否在某时间段内
  12. OpenCasCade开发环境搭建
  13. Delphi7调用百度API
  14. 服务器安装、卸载宝塔面板
  15. 东芝服务器报错误代码维修,东芝复印机维修故障代码
  16. 文字转视频 python_用Python自动生成快闪文字视频
  17. 终于找到YST的BLOG了!!!!
  18. Quartile收购Sidecar,打造首屈一指的跨渠道电商广告平台
  19. 每日一坑:加载DLL失败:找不到指定模块
  20. 肖臻公开课(八)——比特币中的挖矿

热门文章

  1. 部署以太坊智能合约01
  2. windows开源会有linux吗,微软真的要开源Windows?小伙伴惊呆了!
  3. ef oracle 双引号,Oracle 数据库中字符串和日期必须使用双引号标识。
  4. DELPHI HOOK随手笔记
  5. 最全MySQL8.0实战教程 2 SQL语言基础
  6. 普乐蛙7D动感影院|6d动感电影院|7d动感影院设备
  7. 工商管理如何利用计算机思维,论述工商管理人才素质的重要性
  8. 私域社交电商一站式解决方案,软件开发+供应链服务支持一件代发
  9. 一起来看流星雨--------魏晨
  10. 提高linux上socket的性能(linux优化),提高 Linux 上 socket 性能