Linux shell 编程(八):循环结构

循环语句

在shell中的循环语句如下:

  1. for
  2. while
  3. unitl
  4. case
  5. select

for/while/unitl 必须以done结尾

for循环

for循环用来遍历数组(数据列表)或执行计算语句。

在shell中 for循环有两种形式

第一种用来遍历word序列的数据 word可以是以空格分隔的单词,数组变量或是数字区间/字母区间。
示例:

循环次数为数据序列的个数,每一次循环时会把变量i赋值为本次循环到的数据,可以用在循环体中访问变量i。

第二种,示例:

在上面的循环中,expr1i=0;expr2i<10;expr3i++,其中expr1在循环开始之前执行,expr2定义了运行循环的条件,expr3在循环中执行。

while循环

while 循环会在指定条件为真时循环执行代码块。

语法:

``list-1可以是命令,表达式,如果命令或表达式一直为真则继续执行list-2``` 直到不为真停止循环。
示例:

如果命令ls执行成功,则会一直执行命令echo,和ls,直到命令执行失败。

示例2,使用表达式:

在上面的例子中,首先定义了一个变量i赋值为0,然后用表达式判断i的值是否小于10,如果小于10则执行while循环体中的命令,let i++每执行一次i加1,当i=10时i不小于10,循环结束。

until循环

until循环是 while 循环的变体。该循环会在检查条件是否为真之前执行一次代码块,然后如果条件为真的话,就会退出这个循环。

语法:

示例:


当命令ls执行成功时循环结束,until循环会先判断ls是否执行成功,如果成功则不继续循环,否则继续循环,直到命令执行成功。

while循环一样,until也可以判断表达式,如果表达式执行成功则跳出循环。

case语句

case语句是一个模式匹配语句,基于不同的条件来执行不同的动作,语法如下:

它会用word尝试与pattern匹配,如果匹配则运行该模式下的命令.
示例:


在上面的示例中,将cash.sh传入的第一个参数做匹配,每个模式下的命令必须以;;结束,而case语句必须以esac结束。*为默认匹配,如果前面的模式都不能匹配,则运行该模式下的命令,如果一个模式下不想执行命令可以输入两个分号;;结束。

select语句

select语句可以打印一个选项列表,用于与用户交互。
语法:

select将定义一个变量name,然后从word中将用户选择的编号对应的word数据序列中对应的索引的值赋值给name

在下面的列子中,我将selelctcase语句结合起来使用。

当执行test.sh脚本时,···select将序列数据打印处理供用户选择,而select只接受数字序列,然后case语句将用户选择的数据做匹配,做出相应的动作。<br/>当用户选择1时,select将其序列数据中的位置1的值赋值给变量i,传递到case```语句,然后做出相应的动作。

breakcontinue语句

breakcontinue可以跳出循环。不同的是break会跳出循环,而continue会忽略当此循环,继续下载循环。它们可以在for,while,until循环中使用。

break语句

在上面的列子中,当i等于2时,当2 % 2 == 0,则会跳出循环,下面的循环将不会继续。

continue语句

在上面的列子中,当i % 2 == 0时,continue语句会终止当次循环,继续执行下次循环,从而输出1-10中的奇数。

原文地址:http://blog.51cto.com/jlnetc/2109019

时间: 2024-08-01 02:42:41

Linux shell 编程(八):循环结构的相关文章

Linux Shell编程之二选择结构

Shell编程学习之二 一.bash的条件测试 测试方法或者说测试书写: test EXPR [ EXPR ] [[ EXPR ]] 例如:测试变量 User_Name 的之是否为root test $User_Name="root" [ $User_Name == "root" ] [[ $User_Name == "root" ] 根据比较时操作数的类型,测试类型分为: 测试类型 运算符 运算符所代表的意义 示例 整形测试 -gt -lt -

shell 编程for循环总结

shell编程for循环总结 在shell编程中,循环的执行是将某代码段重复运行多次,常用循环有for.while和until循环,其中for循环经常用于有限次循环,for循环的语法结构有如下两种: 第一种:shell传统for循环语法结构 for 变量名 in 变量取值列表:do 指令- done 其中取值列表通常又有5种方式: (1)直接给出列表,列表中间用空格隔开 [[email protected] ~]#for i in 1 3 5;do echo $i;done 1 3 5 (2)整

Linux Shell 编程实战技巧

目前,越来越多的企业应用会部署在 Linux 系统上的,而 Linux Shell 脚本可以极大地帮助我们完成这些应用的运维任务.这使得 Linux Shell 开发技能成为开发人员的一项重要的.有竞争力的技能.本文就笔者的实际开发经验,以 Korn Shell 为例分享了脚本开发中的常见问题及相关技巧. 避免定时任务脚本的常见问题 很多脚本在实际使用的时候往往是以定时任务的方式运行,而非手工运行.但是实现同样功能的脚本在这两种运行方式下可能遇到的问题不尽相同. 以定时任务方式运行的脚本往往会遇

04 shell编程之循环语句

Shell编程之循环语句 学习目标: 掌握for循环语句编程 掌握while循环语句编程 目录结构: For循环语句 l  读取不同的变量值,以逐个执行同一组命令 l  For语句结构 for 变量名 in 取值列表 do 命令序列 done l  for执行原理 for 变量=取值1,do命令序列.取值2,取值3-取值n,分别do.所有取值都执行完之后,done结束循环. l  根据IP地址检查主机状态 Ip地址存放在ip.txt文件中 每行一个 使用ping命令检测各主机的联通性 l  根据

京峰Linux Shell编程从入门到精通

课程介绍:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. -------------------课程目录------------------- <Shell编程从入门到精通> ├1.linux下shell编程基础入门_(new).mp4├2.Shell编程之变量及LAMP导航菜单编写_(new).mp4├3.Shell编程之IF条件语句各种案例演练_(new).mp4├4.使用if条件语句编写MySQL备份脚本_(new).mp4

Linux Shell编程之五字符串的处理

shell编程之字符串处理 在 shell 中,由于是一种弱类型的语言,在没有事先申明变量类型的情况下,所有的变量都是字符串.所以对字符串的处理就显得相当重要了. 下面介绍常见的对字符串处理的操作. 一.字符串切片 ${string_var:offest:length},类似于数组元素的提取. # 这里的string_var是一个变量,offest 是字符串的开始偏移量,length是切去字符串的长度 var=dhcpd:x:177:177:DHCP server:/:/sbin/nologin

关于linux shell编程,alias rm=&#39;cp [email&#160;protected] ~/backup; rm [email&#160;protected]&#39;

书上的这个例子需要在ubuntu的低版本的系统才支持,现在基本上都不支持了,想实现也很简单自己写一个脚本先备份再删除. alias也只是做了一次替换alias rm='cp [email protected] ~/backup; rm [email protected]' rm text.txt被转换成了cp  [email protected] ~/backup; rm [email protected] text.txt即cp  ~/backup; rm  text.txt可以看到text.

linux shell 按行循环读入文件方法

转http://blog.csdn.net/hittata/article/details/7042779 #/bin/bash printf "*************************************\n" echo " cat file whiel read line"   cat test.txt |while read line   do   echo $line;   done   printf "***************

Linux Shell编程入门

从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁.用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作.在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用.深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一. Linux的Shell种类众多,常见的有:Bourne Shell(/usr/bin/sh或/bin/sh).Bourne