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读取配置文件的方式sed命令详解

    shell读取配置文件的方式sed命令详解

    在编写启动脚本时,涉及到读取配置文件,特地记录下shell脚本读取启动文件的方式,这篇文章主要介绍了shell读取配置文件-sed命令,需要的朋友可以参考下
    2023-04-04
  • Shell实用技巧:快速去除字符串中的空格

    Shell实用技巧:快速去除字符串中的空格

    这篇文章主要介绍了Shell实用技巧:快速去除字符串中的空格,本文给出了3种方法,分别讲解了删除行首空格、删除行末空格、删除所有空格等内容,需要的朋友可以参考下
    2014-11-11
  • Shell编程 Bash引号的那点事

    Shell编程 Bash引号的那点事

    促使我想写这个系列的文章,是因为看到总有人提到相同的问题,犯相同的错误,曾经我也是这么过来的,不忍心看到后面还有人经常这么曲折的过来
    2015-01-01
  • Shell中获取脚本所在目录绝对路径的方法

    Shell中获取脚本所在目录绝对路径的方法

    这篇文章主要介绍了Shell中获取脚本所在目录绝对路径的方法,本文直接给出实现代码,需要的朋友可以参考下
    2015-01-01
  • Shell交互批量更改主机名的方法

    Shell交互批量更改主机名的方法

    大家可能会遇到这种情况,需要批量修改主机名和同步hosts文件到多台主机,例如新购置了一批云服务器等,可能主机名称上并不能满足你的命名规则或规范,但如果一台台去更改可能就太慢又无聊,所以shell脚本绝对是你的最佳选择。下面看看Shell批量更改主机名的方法。
    2016-12-12
  • 解压rpm包的linux命令及rpm命令使用简介

    解压rpm包的linux命令及rpm命令使用简介

    rpm 是红帽(RedHat)软件包管理工具,实现类似于 Windows 中的添加/删除程序功能,本篇文章给大家介绍解压rpm包的linux命令及rpm命令使用简介,需要的朋友参考下
    2015-11-11
  • Shell循环语句的使用(for循环、while循环、until循环)

    Shell循环语句的使用(for循环、while循环、until循环)

    本文主要介绍了Shell循环语句的使用(for循环、while循环、until循环),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • linux下怎么解压.tar.gz .tar.bz2命令

    linux下怎么解压.tar.gz .tar.bz2命令

    这篇文章主要介绍了linux下解压.tar.gz .tar.bz2命令的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-12-12
  • 详解Shell 命令行批量处理图片文件名的实例

    详解Shell 命令行批量处理图片文件名的实例

    这篇文章主要介绍了详解Shell 命令行批量处理图片文件名的实例的相关资料,这里提供实例及实现方法的分析,需要的朋友可以参考下
    2017-08-08
  • shell使用mysqld_multi自动做多实例从库脚本

    shell使用mysqld_multi自动做多实例从库脚本

    这篇文章主要介绍了shell使用mysqld_multi自动做多实例从库脚本,需要的朋友可以参考下
    2014-03-03

最新评论