linux下while循环,Bash 中的 while 循环详解
循环是编程语言的基本概念之一。当您想要多次运行一系列命令直到满足特定条件时,循环很方便。
在诸如Bash之类的脚本语言中,循环对于自动执行重复性任务非常有用。在Bash脚本中有3个基本的循环结构,for循环,while循环,until循环。
本教程解释了Bash中while循环的基础知识,以及用于改变循环流的break和continue语句。
Bash while 循环
只要给定条件的计算结果为true,while循环就会使用一组给定的命令执行未知次数。
Bash while循环采用以下形式:
while [CONDITION]
do
[COMMANDS]
done
在执行命令之前评估条件。如果条件计算结果为true,则执行命令。否则,如果条件的计算结果为false,则循环将终止,程序控制将传递给后面的命令。
在下面的示例中,在每次迭代时,循环打印变量的当前值并将变量i递增1。
i=0
while [ $i -le 2 ]
do
echo Number: $i
((i++))
done
只要i小于或等于2,Tue循环就会迭代。它将产生以下输出:
Number: 0
Number: 1
Number: 2
无限while循环
无限循环是一个无限重复且永不终止的循环。如果条件总是计算为true,则会得到无限循环。
在下面的示例中,我们使用内置命令:,该命令始终返回true以创建无限循环。您还可以使用true内置命令或始终返回true的任何其他语句。
while :
do
echo "Press to exit."
sleep 1
done
上面的while循环将无限期地运行。您可以按下来终止循环CTRL+C。
这是一个单行等价物:
while :; do echo 'Press to exit.'; sleep 1; done
逐行读取文件
while循环最常见的用法之一是逐行读取文件,数据流或变量。
在下面的示例中,while循环将/etc/passwd逐行读取文件并打印每一行。
file=/etc/passwd
while read -r line; do
echo $line
done < "$file"
我们使用输入重定向(< "$file")将文件传递给read控制循环的命令,而不是使用条件控制while循环。while循环将一直运行,直到读取最后一行。
当逐行读取文件中的行始终使用read与-r选项,以防止反斜线作为转义字符。
默认情况下,该read命令修剪前导/尾随空格字符(空格和制表符)。使用命令IFS=前的选项read可以防止此行为
file=/etc/passwd
while IFS= read -r line; do
echo $line
done < "$file"
break和continue语句
break和continue语句可用于控制while循环执行。
break语句
break语句终止当前循环并将程序控制传递给终止循环后面的命令。它通常用于在满足某个条件时终止循环。
在下面的示例中,一旦当前迭代项等于,将中断循环的执行2。
i=0
while [ $i -lt 5 ]
do
echo "Number: $i"
((i++))
if [[ "$i" == '2' ]]; then
break
fi
done
echo 'All Done!'
Number: 0
Number: 1
All Done!
continue语句
continue语句退出循环的当前迭代,并将程序控制传递给循环的下一次迭代。
在下面的内容中,一旦当前迭代项等于2continue语句,将导致执行返回到循环的开始并继续下一次迭代。
i=0
while [ $i -lt 5 ]
do
((i++))
if [[ "$i" == '2' ]]; then
continue
fi
echo "Number: $i"
done
echo 'All Done!'
Number: 1
Number: 3
Number: 4
Number: 5
All Done!
结论
到现在为止,您应该很好地理解如何使用bash while循环。
如果您有任何问题,请随时发表评论。
linux下while循环,Bash 中的 while 循环详解相关推荐
- linux命令行使用for循环,小弟我使用过的Linux命令之for - Bash中的For循环
我使用过的Linux命令之for - Bash中的For循环 我使用过的Linux命令之for - Bash中的For循环 本文链接:http://codingstandards.iteye.com/ ...
- 创建三个并发进程linux,Linux下几种并发服务器的实现模式(详解)
1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循 ...
- dns日志级别 linux,linux下DNS服务器视图view及日志系统详解
linux下DNS服务器视图view及日志系统详解DNS服务器ACL:在named.conf文件中定义ACL功能如同bash当中定义变量,便于后续引用 ACL格式: acl ACL名称 { IP地址1 ...
- 1 linux下tcp并发服务器的几种设计的模式套路,Linux下几种并发服务器的实现模式(详解)...
1>单线程或者单进程 相当于短链接,当accept之后,就开始数据的接收和数据的发送,不接受新的连接,即一个server,一个client 不存在并发. 2>循环服务器和并发服务器 1.循 ...
- linux在vi创建文件,Linux下创建文本文件(vi/vim命令使用详解)
vi test.txt 或者 vim test.txt 再或者 touch test.txt vim是vi的升级版,指令更多,功能更强. 下面是收集的vim用法,当在vim里面要实现退出,首先要做的是 ...
- linux c多进程多线程,linux下的C\C++多进程多线程编程实例详解
linux下的C\C++多进程多线程编程实例详解 1.多进程编程 #include #include #include int main() { pid_t child_pid; /* 创建一个子进程 ...
- Linux如何重启oracle监听,Linux下重启oracle服务及监听器和实例详解
一.在Linux下重启Oracle数据库及监听器: 方法1: 用root以ssh登录到linux,打开终端输入以下命令: cd $ORACLE_HOME #进入到oracle的安装目录 dbstart ...
- linux教程for语句,Bash 中的 For 循环详解
循环是编程语言的基本概念之一.当你想要一遍又一遍地运行一系列命令直到达到某个条件后终止退出时,循环很方便. 在诸如 Bash 之类的脚本语言中,循环对于自动执行重复性任务非常有用.在 Bash 脚本中 ...
- linux怎么强制解挂,linux下强制卸载挂接点——umount+Fuser命令详解
fuser -km /soft umount /soft Linux命令Fuser详解 使用文件或者套节字来表示识别进程.我常用的他的两个功能:查看我需要的进程和我要杀死我查到的进程 比如当你想umo ...
- Linux下DIR,dirent,stat等结构体详解(转)
最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅. 首先说说DIR这一结构体,以下为DIR结构体的定义: struct __dirstre ...
最新文章
- javaScript由哪些部分组成?
- mysql session变量_mysql 系统变量和session变量
- 基于CLGeocoder - 地理编码
- [转载] Java:获取数组中的子数组的多种方法
- c语言中状态机的作用,C语言中的状态机
- 深度学习 占用gpu内存 使用率为0_2020年深度学习最佳GPU一览,看看哪一款最适合你!...
- ADAS技术市场总结展望(2021年-2022年)
- 05 Java 求职简历制作
- 前端实现省市县三级联动的功能
- 网络地址快速计算方法:IP地址24位-30位掩码绕过二进制计算迅速得到网络地址
- linux下对IP地址的转发和端口的伪装----利用iptables部署
- 身份证号码编码规则及校验位校验算法
- 一点点读懂cpufreq(二)
- 强烈推荐张玉宏《深度学习之美》成书前的《深度学习系列十四篇》
- 基于CT107D开发板的控制ne555方波发生器输出200Hz-20kHz频率
- HTML+CSS鼠标悬停效果
- 51单片机c语言程序控制,51单片机C语言程序设计源代码
- 数据分析师笔试题(一)
- 雄霸迈阿密java_罪恶都市3之雄霸迈阿密
- vue-qr生成带logo和背景图片的二维码