shell--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

相关推荐

  1. shell--while循环

    2024-04-22 10:28:03       17 阅读
  2. 14.bash shell中的for/while/until循环

    2024-04-22 10:28:03       43 阅读
  3. while循环

    2024-04-22 10:28:03       40 阅读
  4. Py-While循环语句

    2024-04-22 10:28:03       33 阅读
  5. 认识do-while循环

    2024-04-22 10:28:03       33 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-22 10:28:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-22 10:28:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-22 10:28:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-22 10:28:03       20 阅读

热门阅读

  1. NLP(3)--利用nn反向计算参数

    2024-04-22 10:28:03       14 阅读
  2. OpenXR手部追踪实现详解

    2024-04-22 10:28:03       17 阅读
  3. 【MySQL】脏读,幻读,不可重复读

    2024-04-22 10:28:03       22 阅读
  4. redis主从

    2024-04-22 10:28:03       14 阅读
  5. AWS Certified Solutions Architect

    2024-04-22 10:28:03       14 阅读
  6. C#面:解释什么是 IEnumerable

    2024-04-22 10:28:03       19 阅读
  7. c# 反射的应用

    2024-04-22 10:28:03       14 阅读
  8. elasticsearch 关于向量化检索

    2024-04-22 10:28:03       13 阅读