分享4个shell脚本实例,看完也就知道while循环怎么用了

2019-11-01     波波说运维

概述

在编程语言中,while循环(英语:while loop)是一种控制流程的陈述。利用一个返回结果为布林值(Boolean)的表达式作为循环条件,当这个表达式的返回值为“真”(true)时,则反复执行循环体内的程式码;若表达式的返回值为“假”(false),则不再执行循环体内的代码,继续执行循环体下面的代码。

下面用几个实例来理解下while怎么去用。


1、while创建定时任务

#!/bin/bash
while true
do
uptime
sleep 0.6
done

结果:


2、计算1-100的和

--bc命令实现

echo `seq -s + 1 100`|bc

--while循环

#!/bin/bash
i=1

while [ "$i" -le 100 ]
do
((b=b+i))
((i++))
done
echo $b


3、手机通讯计费功能

#!/bin/bash
sum=1000
i=15


while [ $sum -ge 15 ]
do
cat<=================
1.发短信
2.查余额
3.账户充值
4.退出
=================
EOF
read -p "你要做什么呢?" Some
case "$Some" in
1)
sum=$((sum-i))
read -p "请输入发送短信的内容:"
read -p "请输入收信人:"
sleep 0.3
echo "发送成功."
echo "您当前余额为$sum"
;;
2)
echo "您当前余额为$sum"
;;
3)
read -p "请输入你要充值的金额:" ChongZhi
sum=$((sum+ChongZhi))
echo "充值成功,当前余额为$sum"
;;
4)
exit
;;
*)
echo "输入有误!"
exit 2
esac
done

echo "余额不足,请及时充值!"


4、获取取文件中的行,单词和字符

4.1 迭代获取文件中的每一行

--方法一
while read line;
do
echo $line;
done < file.txt
--方法二
cat file.txt|while read line
do
echo $line
done
--方法三
exec < file.txt
while read line;
do
echo line;
done

4.2 迭代获取每一个单词

for word in $line;
do
echo $word;
done

4.3 迭代获取每一个字符

word=participate
for ((i=0;i<${#word};i++))
do
echo ${word:1:1};
done

4.4 同时获取取文件中的行,单词和字符脚本

#!/bin/bash
n=1
while read i
do
echo "第${n}行 $i"
m=1
for x in $i
do
echo "第${m}个单词 $x"
echo $x|grep -o .
((m++))
done
((n++))
done < $1


大家有空也可以自己测试一下,觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~

文章来源: https://twgreatdaily.com/zh-hans/yTJ1JG4BMH2_cNUgmJKz.html