linux脚本嵌套循环,Linux Shell 脚本:循环语句
在这章节中,我们会讨论Unix系统里面的Shell循环。循环就是一个可以让你重复执行某一个命令的编程方法。在这章节中,我们会介绍可用于Shell程序员的以下类型的循环 -
while循环
for循环
until循环
select循环
你将会在不同情况下使用最适当的循环方法。例如,while循环执行一个命令直到给的条件保持为真;until循环执行一个命令知道条件为真。
一旦你有了良好的编程实践,你将获得专业知识,从而在不同的情况下使用适当的循环方法。在这里,while和for循环普遍于其它的编程语言,比如C,C++和PERL等等。
while循环
while循环使您能够重复执行一组命令,直到条件不为真。while循环通常用于反复操作变量的值。
句法
while command
do
Statement(s) to be executed if command is true
done
上面的那个句法,程序会先计算 command 语句的结果,如果返回的结果是 true,则会执行 statement(s) 里面的程序。如果 command 返回的结果是 false,则不执行任何语句。并且程序将跳至 done 语句之后的下一行。
例子
下面是一个简单的示例,使用 while 循环打印数字 0 到 9
#!/bin/sh
a=0
while [ $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
上面的程序执行后,将收到以下结果:
0
1
2
3
4
5
6
7
8
9
变量 a 的初始值为 0,每次执行此循环时,都会检查变量 a 的值,以查看其值是否小于 10。如果 a 的值小于 10,就显示 a 的当前值,然后将 a 递增 1。
for 循环
for 循环对项目列表进行操作,它重复执行列表中的每一个项目的命令集。
句法
for var in word1 word2 ... wordN
do
Statement(s) to be executed for every word.
done
上面的代码,var 是变量的名称,而 word1 到 wordN 是由空格(单词)分隔的字符序列。每次执行 for 循环时,变量 var 的值将设置为单词列表 word1 至 wordN 中的下一个单词。
示例
下面是一个简单的例子,给定一个数字列表,使用 for 循环遍历 −
#!/bin/sh
for var in 0 1 2 3 4 5 6 7 8 9
do
echo $var
done
执行脚本后,您将获得以下结果 −
0
1
2
3
4
5
6
7
8
9
下面的例子将显示所有以 .bash 开头的文件,此段脚本对你的家目录同样有效。我们从我的根目录执行这个脚本 −
#!/bin/sh
for FILE in $HOME/.bash*
do
echo $FILE
done
以上脚本会产生以下结果 −
/root/.bash_history
/root/.bash_logout
/root/.bash_profile
/root/.bashrc
until 循环
while 循环非常适合在某些条件为真时需要执行一组命令的情况。有时则需要执行一组命令,直到条件为真为止。
语法
until command
do
Statement(s) to be executed until command is true
done
在这里, Shell 命令 被评估。如果结果值为 false ,则执行给定的 语句 。 如果 命令 结果值是 true ,则不会执行任何语句,程序将跳到完成语句之后的下一行。
示例
这里有一个简单的例子,它使用 until 循环来显示零到九的数字 −
#!/bin/sh
a=0
until [ ! $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
脚本执行后,您将获得以下结果 −
0
1
2
3
4
5
6
7
8
9
select 循环
select 循环提供了一种简单的方法来创建一个编号菜单,用户可以从中选择选项。这种场合适用于当您需要用户从选择列表中选择一个或多个项时。
语法
select var in word1 word2 ... wordN
do
Statement(s) to be executed for every word.
done
这里 var 是变量的名称, word1 到 wordN 是由空格(或者单词)分隔的字符序列。每次执行 for 循环时,变量 var 的值都会被设置为单词列表中的下一个单词,即从 word1 到 wordN 。
对于每个选择,将在循环中执行一组命令。 select 循环是在 ksh 中引入的,已被 bash 兼容,但在 sh 环境中无效。
Example
这里有一个简单的例子,让用户选择一种饮料 −
#!/bin/ksh
select DRINK in tea cofee water juice appe all none
do
case $DRINK in
tea|cofee|water|all)
echo "Go to canteen"
;;
juice|appe)
echo "Available at home"
;;
none)
break
;;
*) echo "ERROR: Invalid selection"
;;
esac
done
由 select 循环呈现的菜单如下所示 −
$./test.sh
1) tea
2) cofee
3) water
4) juice
5) appe
6) all
7) none
#? juice
Available at home
#? none
$
您可以采用下面的方法通过更改变量 PS3 的值来更改 select 循环的提示信息 −
$PS3 = "Please make a selection => " ; export PS3
$./test.sh
1) tea
2) cofee
3) water
4) juice
5) appe
6) all
7) none
Please make a selection => juice
Available at home
Please make a selection => none
$
嵌套循环
所有循环都支持嵌套,这意味着您可以将一个循环放入另一个类似的循环或不同的循环中。只要您需要,嵌套层数可以任意的多。
下面是嵌套的 while 循环示例。其它循环可以基于编程需求以类似的方式嵌套 −
while 嵌套循环
可以使用 while 循环作为另一个 while 循环体的一部分。
语法
while command1 ; # 这是第一层循环,即外层循环
do
Statement(s) to be executed if command1 is true
while command2 ; # 这是第二层循环,即内层循环
do
Statement(s) to be executed if command2 is true
done
Statement(s) to be executed if command1 is true
done
示例
下面是嵌套循环的一个简单例子。让我们在循环中添加另一个您通常数到 9 的倒计数循环−
#!/bin/sh
a=0
while [ "$a" -lt 10 ] # 这是第一层循环
do
b="$a"
while [ "$b" -ge 0 ] # 这是第二层循环
do
echo -n "$b "
b=`expr $b - 1`
done
echo
a=`expr $a + 1`
done
这将产生以下结果。 需要注意的是 echo-n 在这里的用处是什么。 这里的 -n 选项是让 echo 避免换行。
0
1 0
2 1 0
3 2 1 0
4 3 2 1 0
5 4 3 2 1 0
6 5 4 3 2 1 0
7 6 5 4 3 2 1 0
8 7 6 5 4 3 2 1 0
9 8 7 6 5 4 3 2 1 0
linux脚本嵌套循环,Linux Shell 脚本:循环语句相关推荐
- Linux命令行与shell脚本编程大全:第2版
<Linux命令行与shell脚本编程大全:第2版> 基本信息 作者: (美)布卢姆(Blum,R.) 布雷斯纳汉(Bresnahan.C.) [作译者介绍] 译者: 武海峰 丛书名: 图 ...
- 《Linux命令行与Shell脚本编程大全第2版.布卢姆》pdf
下载地址:网盘下载 内容简介 · · · · · · 本书是一本关于Linux 命令行与shell 脚本编程的全面教程.全书分为四部分:第一部分介绍Linuxshell 命令行:第二部分介绍shel ...
- 《Linux命令行与shell脚本大全》笔记
初识Linux Shell 什么是Linux Linux可划分为以下四部分: Linux内核 GNU工具 图形化桌面环境 应用软件 深入探究Linux内核 内核主要负责以下四种功能: 系统内存管理 软 ...
- linux 命令行与shell脚本编程大全
linux 命令行与shell脚本编程大全 第一章 Linux LiveCD就是从cd读取的系统,由于没法将数据写入到cd,所以一旦重启,之前操作过后的一切数据都会丢失. 第二章 第三章 1.man手 ...
- Linux从入门到精通系列之SHELL编程循环语句语法及实例详解(forwhileuntil)
前言 Shell作为一种脚本编程语言,同样了包含了循环,分支等其他程序控制结构,从而能够轻松完成更加复杂.强大的功能.我们今天就来认识for.while.case语句的具体应用. 插个小广告吧,虽然我 ...
- linux脚本编写规则,shell脚本编写守则
现在centos7中使用的是bash软件,通过以下命令可以查看bash版本: [root@localhost ~]# cat /etc/redhat-release #查看系统的版本 CentOS L ...
- 《Linux命令行与shell脚本编程大全》笔记一
第一章 初始 Linux shell Linux内核主要四种功能: 1.系统内存管理 2.软件程序管理 3.硬件设备管理 4.文件系统管理 shell:交互工具. 第三章 基本的bash shell ...
- 【Linux】《Linux命令行与shell脚本编程大全 (第4版) 》笔记-汇总 ( Chapter17-ChapterB )
十七.创建函数 bash shell 提供了用户自定义函数功能,可以将 shell 脚本代码放入函数中封装起来. 函数是一个脚本代码块,你可以为其命名并在脚本中的任何位置重用它.每当需要在脚本中使用该 ...
- 【2018深信服 醒狮计划】《Linux命令行与Shell脚本编程大全》学习笔记
2018深信服"醒狮计划"笔记 第3周(5.02-5.13) 课程 必修 选修 基本要求 Shell编程 <Linux命令行与Shell脚本编程大全> <Perl ...
- linux脚本求命令行上整数和,《Linux命令行与shell脚本编程大全》 第二十二章 学习札记...
<Linux命令行与shell脚本编程大全> 第二十二章 学习笔记 第二十二章:使用其他shell 什么是dash shell Debian的dash shell是ash shell的直系 ...
最新文章
- Go 分布式学习利器(19)-- Go并发编程 之 CSP(communicating sequential processes) 机制
- linux系统中删除文件夹
- Extmail + Postfix on Debian5
- 用子函数的方法求一个3*4的数组的转置数组
- 由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例...
- redis api-String
- 求数组非连续子序列的最大和
- 完数c++语言程序_C语言经典100题(19)
- 实现类似黑客帝国的字符流特效屏保
- Newtonsoft.Json基本使用
- [搜片神器]使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)
- 155页4万字智慧交通电子警察系统平台解决方案
- 新视野大学英语第三版3课后翻译
- 发热内衣的优势在哪里
- Enter键绑定按钮或方法
- 本地自签https证书
- 华为数通HCIA学习笔记之OSI参考模型TCP/IP模型
- USACO美国信息学奥赛竞赛12月份开赛,中国学生备赛指南
- n行数字组成的数字三角形详解
- 2022 年全球重大经济事件盘点( I )