循环结构

for循环格式一
格式:
for 变量 in 值1 值2 ........(值不一定是数字,可以是命令或者其他的)
do
命令
done

[root@ceshiji ~]# vim a.sh
#!/bin/bash
for x in `seq 1 255`
do(for循环整体要用do开始)
ping -c 10 -x 0.1 192.168.4.$x &>/dev/null(ping192.168.4.0网段的主机)
if [ $? -eq 0 ];then(判断上一个命令是否等于0)
echo "$x is up" >up.txt(等于显示up并把结果放入up.txt文件)
else
echo "$x is down" >down.txt(不等于显示down并把结果放入down.txt文件)
fi
done(done结束)

[root@ceshiji ~]# vim a.sh
#!/bin/bash
for x in 1 88 3 90
do
echo $x
done
for x in a da ads ffd
do
echo $x
done
for x in a b c
do
echo hello
done

实例:用脚本循环将/var/log/所有内容tar打包
[root@ceshiji ~]# vim a.sh
#!/bin/bash
for x in `ls /var/log`
do
tar -czf $x.tar /var/log/$x
done

for循环格式二
for ((x=1;x<=5;x++)) //++表示值本身叠加+1,--表示值本身叠加-1
do
echo $x
done

[root@ceshiji ~]# vim a.sh(用脚本写乘法口诀表)
#!/bin/bash
for ((x=1;x<=9;x++))
do
for ((y=1;y<=x;y++))
do
echo -n "$x*$y=$((x*y)) " //echo -n:不换行
done
echo
done

while循环条件式循环,反复测试条件,只要成立就执行命令
格式:
while [ 判断 ]
do
命令
done

死循环:
while :
do
命令
done

实例:
用脚本写个小程序,
查看cpu
查看内存
查看硬盘
查看ip

[root@ceshiji ~]# vim a.sh
#!/bin/bash
while :
do
echo "1.查看cpu
2.查看内存
3.查看磁盘
4.查看ip
5.退出
read -p "输入指令1-5:" x
if [ $x -eq 1 ];then
echo "CPU工作频率如下:"
cat /proc/cpuinfo |grep MH
read -p "按回车键继续"
elif [ $x -eq 2 ];then
echo "内存如下:"
free |grep +
read -p "按回车键继续"
elif [ $x -eq 3 ];then
echo "磁盘数据如下:"
df -h
read -p "按回车键继续"
elif [ $x -eq 4 ];then
echo "ip如下:"
ifconfig
read -p "按回车键继续"
elif [ $x -eq 5 ];then
exit
fi
done

——————————————————————————————————
case语句
case语句 == if语句
格式:
case 变量 in
值1)
命令;;
值2)
命令;;
值3)
命令
esac

[root@ceshiji ~]# vim a.sh
#!/bin/bash
case $1 in
a-z)
echo zimu;;
0-9)
echo shuzi;;
*)
echo "fuhao"
esac

————————————————————————————————————————
函数[避免重复的代码]

定义函数
函数名(){
命令
命令
}
调用函数
函数名

[root@ceshiji ~]# vim b.sh
#!/bin/bash
mymkdir(){
mkdir $1
cd $!
echo "ok"
}
mymkdir

脚本的中断:
cintinue:跳转到下一步执行
break:结束循环(只对循环有作用)
exit:退出
[root@ceshiji ~]# vim a.sh
#!/bin/bash
for i in {1...5}(i赋值1到5)
do
[ $i -eq 3 ] && continue(判断如果i等于3 跳转到下一步执行)
echo $i
done

[root@ceshiji ~]# ./a.sh
1
2
4
5

[root@ceshiji ~]# vim a.sh
#!/bin/bash
for i in {1..5}
do
[ $i -eq 3 ] && break(结束循环,只对循环有作用)
echo $i
done
echo ok
[root@ceshiji ~]# ./a.sh
1
2
ok
————————————————————————————————————————

转载于:https://www.cnblogs.com/Hydraxx/p/7246770.html

shell脚本基础 循环机构相关推荐

  1. Shell脚本基础 、 使用变量 、 条件测试及选择 、 列表式循环案例

    Shell脚本基础 . 使用变量 . 条件测试及选择 . 列表式循环案例 1 案例1:Shell脚本的编写及测试 1.1 问题 1.2 方案 1.3 步骤 2 案例2:重定向输出的应用 2.1 问题 ...

  2. Linux shell脚本基础学习

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  3. Shell 脚本基础学习 (四)

    现在我们来讨论编写一个脚本的一般步骤.任何优秀的脚本都应该具有帮助和输入参数.并且写一个伪脚本(framework.sh),该脚本包含了大多数脚本都需要的框架结构,是一个非常不错的主意.这时候,在写一 ...

  4. Linux shell脚本基础学习详细介绍(完整版)一

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  5. Linux shell脚本基础学习详细介绍(完整版)2

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  6. Linux shell脚本基础学习详细介绍(完整版)

    Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头.注释.变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提. 1. Li ...

  7. shell脚本for循环_了解Shell脚本中的for循环

    shell脚本for循环 Continuing on from our previous tutorials, let's understand the for loop in shell scrip ...

  8. linux 脚本编写 -eq,关于shell脚本基础编程第四篇

    shell脚本基础编程第四篇 本章主要内容:函数 函数 function: function 名称 { 命令 ; } 或 name () { 命令 ; } 定义 shell 函数. 创建一个以 NAM ...

  9. 什么是Shell?Shell脚本基础知识详细介绍

    这篇文章主要介绍了什么是Shell?Shell脚本基础知识介绍,本文是一篇Shell脚本入门文章,在本文你可学到什么是Shell.有多少种Shell.一个Shell脚本代码实例,需要的朋友可以参考下 ...

  10. Shell脚本基础及常用的四剑客

    Shell脚本基础及应用 一.shell变量 二.判断语句 if语句 if语句实战 三.循环语句 for循环 while循环 until循环 四.选择语句 case语句 五.四剑客 grep sed ...

最新文章

  1. Ubuntu 14.04 64位上安装Valgrind 3.13.0 操作步骤
  2. java基本数据类型自动转包装类_java基本数据类型和包装类相互转换
  3. HDU-4483 Lattice triangle 数论
  4. 【转】Extending Lync Server routing with MSPL
  5. JavaScript 实现数据结构中的所有算法---通俗易懂
  6. c++两个vector合并_这才是真正的 Git——分支合并
  7. Facebook用户遭遇千年虫:瞬间有了46年老友
  8. codeforces 816 B. Karen and Coffee(思维)
  9. 设置共享文件夹,samba和chmod到底谁的权限大
  10. 随想录(软件逆向与OllyDbg)
  11. springboot通过各种不同类型参数获取容器中的bean工具类
  12. python中下划线开头的命名_Python中 5 种不同的下划线含义你都知道吗?
  13. 数据库事务的特性及其实现原理
  14. Python进阶之路(3):提取公众号后台数据并数据可视化
  15. android 仿饿了么地图,微信小程序仿饿了么地址定位、筛选与回传
  16. python tokenize_model_如何将关键字放入NLTK tokenize中?
  17. eclipse指定jsp的默认打开方式
  18. 智能驾驶功能软件平台设计规范 第一部分:系统架构
  19. 腾讯通服务器删除离线消息,如何撤回RTX离线消息离线文件.docx
  20. 中文数藏与CIC国信公链等有关机构顺利召开国内数字藏品规划标准研讨会

热门文章

  1. 运维专家写给运维工程师的 6 条人生忠告
  2. 记住:永远不要在MySQL中使用utf8,请使用utf8mb4
  3. 微软Azure云服务故障超过24小时,原因竟是——被雷劈了
  4. 程序员以上帝视角解读“旅行青蛙”,你的呱真的在旅行嘛?
  5. mysql基础之数据库变量(参数)管理
  6. Java中单例设计模式总结
  7. VUE优秀的组件库总结
  8. 2017-2018-1 20155330 《信息安全系统设计基础》第3周学习总结
  9. 使用javascript 实现.net 验证控件功能
  10. day 32 半链接、粘包问题、finally