while和until循环的应用实践

前端之家收集整理的这篇文章主要介绍了while和until循环的应用实践前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

10.1 当型和直到型循环语法


while时条件表达式成立之后,会进入循环体里面执行,不成立时退出,until循环语句的用法于while类似,区别在于在条件表达式不成立时候,进入循环执行指令,条件表达式成立时,终止循环。很少用until

while <条件表达式>

do

指令....

done


当型和直到型循环的基本范例


每隔几秒输出一个系统负载,在脚本的结尾使用&符号在后台运行

#!/bin/bash

whiletrue
do
uptime
#uptime>>/tmp/load.txt
sleep3
done

在实际工作中,一般会通过客户端ssh连接服务器,因此可能就会有在脚本或命令执行期间不能中断的需求,若中断,前功尽弃,更要命的会破坏系统数据,下面是防止脚本中断的几个可行方法

1)利用 sh /server/scripts/while_01.sh & 命令,即使用&在后台运行脚本

2)使用nohup /server/scripts/uptime.sh & 命令。即使用nohup加&在后台运行脚本

3)利用screen保持会话,然后在执行命令或脚本,即使用screen保持当前会话状态


1和2的差别在于,如果当前ssh远程连接的shell界面断开连接,1就会停止,而2不会停止


让shell脚本在后台运行的知识

用法 说明

sh while_01.sh 把脚本放到后台执行(在后台运行脚本的常用方法

ctrl+c 停止执行当前脚本

ctrl+z 暂停执行当前脚本或任务

bg 把当前脚本或任务放到后台执行,bg可以理解为background

fg 把当前脚本或任务放到前台执行,

jobs 查看当前执行的脚本或者任务

kill 关闭执行的脚本任务,即以“kill % 任务编号”


竖向打印54321:

#!/bin/bash
i=5
while(($i>0))
do
echo$i
((i--))
done
或者:
#!/bin/bash
i=5
while[$i-gt0]
do
echo$i
((i--))
done
或者:
#!/bin/bash
i=5
while[[$i>0]]
do
echo$i
((i--))
done

也可以使用$1传参的命令进行计算。


使用until进行判断:

#!/bin/bash
i=5
until[$i-lt1]
do
echo$i
((i--))
done

计算从1加到100之间(请使用1+2+3...+100的方法

#!/bin/bash
i=1
sum=0
while(($i<101))
do
sum=$(($sum+$i))
((i++))
done
echo$sum

范例:猜数字游戏,首先让系统随机生成一个数字,给这个数字设定一个范围(1~60),让用户输入所猜的数字,游戏规则是:对输入进行判断,如果不符合要求,就给予高或低的提示,猜对后则给出所用的次数,请用while实现。

自己写的简易版本的:
#!/bin/bash

exportLANG="zh_CN.UTF-8"
a=$(($RANDOM%61))
b=1

echo"这个擀面皮"$a"元"
sleep2
echo"----------------"
clear
echo"这个面皮多钱?请输入0-60的价格"

read-p"请输入你的价格:"num

if[$num-eq$a];then
echo$b
exit1
else
num1=$num
fi

while[$num1-ne$a]
do
if[$num1-gt$a];then
echo"这个价格有点高"
elif[$num1-lt$a];then
echo"这个价格有点低"
else
echo"恭喜你猜对了"
return0
fi
read-p"再次输入价格:"num1
((b++))
done
echo“你共猜了"$b"次才才猜对的,很笨”

范例10-5:手机充值10元,每发 一次短信(输出当前余额)花费1角5分钱,当余额低于1角5分钱的时候就不能在发短信了,提示“余额不足,请充值”(允许用户充值后继续发短信),请用while语句实现。

目前写的最专业,最好的脚本
#!/bin/bash

exportLANG="zh_CN.UTF-8"

sum=15#初始费用
b=15#发一次短信需要的费用

me(){
cat<<EOF
当前余额为$sum,余额不足,请充值
==============================

1.充值
2.发消息
3.退出
==============================

EOF
}
chong(){
read-p"请输入充值金额:"num

expr$num+10>/dev/null
js=$?
if[$js-eq0];then
sum=$(($sum+$num))
printf"充值成功,充了$num,现在还有"$sum"话费\n"
else
echo"这是一个错误的数字"
#return0
fi

}
send(){
if[$sum-ge15];then
sum=$(($sum-$b))
printf"发送一条短信,现在还有“$sum”话费,请及时充值\n"

else
printf"余额不足,请充值\n"

sleep3

chong
fi
}



main(){
me
whiletrue
do
read-p"yourchoices:"dd
case"$dd"in
1)
chong
;;
2)
send
;;
3)
exit5
;;
*)
echo"thisisabad"
esac

done

}

main
原文链接:https://www.f2er.com/bash/388785.html

猜你在找的Bash相关文章