shel  while循环示例小结

 更新时间:2024年04月22日 10:31:23   作者:MMR.陈  
使用while循环,可以使得用户重复执行一系列操作,直到某个条件的发生,这篇文章主要介绍了shel while循环,需要的朋友可以参考下

1.基本语法

while [ 条件表达式 ]
do
	语句
	语句
done

示例:循环输出 1~10这几个数

[root@openEuler ~]# cat while1.sh 
#!/bin/bash
i=1
while [ $i -le 10 ]
do
	echo $i
	let i++
done

示例:使用 exec 读取指定文件的内容并循环输出。

# 第一步创建文件及内容
[root@openEuler ~]# cat > myfile << EOF
> open
> openlab
> openlab123
> linux
> readhat
> EOF
[root@openEuler ~]# cat myfile 
open
openlab
openlab123
linux
readhat
# 第二步:编写脚本来实现文件读取并循环输出
[root@openEuler ~]# cat while2.sh 
#!/bin/bash
exec < myfile
while read line
do
	echo $line
done
[root@openEuler ~]# bash while2.sh 
open
openlab
openlab123
linux
readhat

使用另一种方式来读取文件:

[root@openEuler ~]# cat while3.sh 
#!/bin/bash
while read line
do
	echo $line
done < myfile
[root@openEuler ~]# bash while3.sh 
open
openlab
openlab123
linux
readhat

2.无限循环

在 while 的表达式中,可以指定以下几个特殊值:

  • true 它会一直循环,而且它的状态返码是 0
  • false 它不做任何事,表示成功,状态码为 0
  • : 它的作用与 true 相同,都是进行无限循环

示例:

[root@openEuler ~]# while true ; do echo 123123 ; done   #会一直循环
[root@openEuler ~]# while false ; do echo 123123 ; done
[root@openEuler ~]# echo $?
0
[root@openEuler ~]# while : ; do echo 123123 ; done

3.使用示例

[root@openEuler ~]# cat while4.sh 
#!/bin/bash
price=$[ $RANDOM % 100 ]
time=0
while true
do
	read -p 'Please enter product price [0-99]: ' input
	let time++
	if [ $input -eq $price ]; then
		echo 'Good luck, you guessed it.'
		echo 'You have guessed $time times.'
		exit 0
	elif [ $input -gt $price ]; then
		echo "$input is to high"
	else
		echo "$input is to low"
	fi
	if [ $time -eq 5 ]; then
		echo "You have guessed is 5 times. exit"
		exit 1
	fi
done
[root@openEuler ~]# bash while4.sh 
Please enter product price [0-99]: 50
50 is to low
Please enter product price [0-99]: 80
80 is to high
Please enter product price [0-99]: 70
70 is to high
Please enter product price [0-99]: 60
60 is to low
Please enter product price [0-99]: 65
65 is to low
You have guessed is 5 times. exit
[root@openEuler ~]# 

示例:使用while读取文件

# 1. 创建文件
[root@openEuler ~]# cat ips
192.168.72.131  22
192.168.72.132  23
192.168.72.133  22
# 2. 编写脚本 
[root@openEuler ~]# cat while6.sh 
#!/bin/bash
while read line
do
	IP=`echo $line|cut -d" " -f1`   # 也可以使用awk来实现,如:IP=`echo $line|awk '{print $1}'`
	PORT=$(echo $line|cut -d " " -f 2)
	echo "IP:$IP, PORT:${PORT}"
done < ips
# 3. 运行测试
[root@openEuler ~]# bash while6.sh 
IP:192.168.72.131, PORT:22
IP:192.168.72.132, PORT:23
IP:192.168.72.133, PORT:22

到此这篇关于shel while循环的文章就介绍到这了,更多相关shell while循环内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • shell 脚本之用ab每隔30分钟并发一次休息10分钟

    shell 脚本之用ab每隔30分钟并发一次休息10分钟

    这篇文章给大家分享如何使用shll解决用ab每隔30分钟并发一次休息10分钟,需要的朋友可以参考下
    2019-11-11
  • Shell脚本实现自动备份网站和数据库并上传到云存储

    Shell脚本实现自动备份网站和数据库并上传到云存储

    这篇文章主要为大家详细介绍了Shell脚本实现自动备份网站和数据库并上传到云存储的相关知识,文中的示例代码讲解详细,希望对大家有所帮助
    2025-11-11
  • linux修改tomcat默认访问项目的具体步骤(必看篇)

    linux修改tomcat默认访问项目的具体步骤(必看篇)

    下面小编就为大家带来一篇linux修改tomcat默认访问项目的具体步骤(必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 开发必备Linux常用的几个命令分享

    开发必备Linux常用的几个命令分享

    Linux作为一个高度成熟和强大的操作系统,拥有非常丰富的命令行工具,对于Java开发者来说,掌握一些常用的Linux命令可以大大提高工作效率,尤其是在服务器端开发时,本文小编给大家分享了一些常用命令,需要的朋友可以参考下
    2023-10-10
  • linux shell文件转码iconv命令的使用

    linux shell文件转码iconv命令的使用

    本文主要介绍了linux shell文件转码iconv命令的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 使用Shell脚本如何启动/停止Java的jar程序

    使用Shell脚本如何启动/停止Java的jar程序

    这篇文章主要介绍了使用Shell脚本如何启动/停止Java的jar程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • linux shell中if的各种判断

    linux shell中if的各种判断

    这篇文章主要介绍了linux shell中if的各种判断,需要的朋友可以参考下
    2019-04-04
  • Linux 终端中命令输出保存到文件中的方法

    Linux 终端中命令输出保存到文件中的方法

    这篇文章主要介绍了如何将 Linux 终端中命令的输出保存到文件中实例操作,操作步骤非常详细,有需要的小伙伴可以按步骤来研究下吧
    2020-12-12
  • Bash Shell通配符与正则表达式实用示例详解

    Bash Shell通配符与正则表达式实用示例详解

    正则表达式是一种可以用于模式匹配和替换的工具,通过正则表达式,Shell可以使用一系列的特殊字符构建匹配模式,然后将匹配模式与待比较字符串或文件进行比较,这篇文章主要介绍了Bash Shell通配符与正则表达式的相关资料,需要的朋友可以参考下
    2025-10-10
  • Shell脚本定义变量和重新赋值

    Shell脚本定义变量和重新赋值

    这篇文章主要介绍了Shell脚本定义变量和重新赋值,以及变量命名规则,需要的朋友可以参考下
    2014-07-07

最新评论