while和until的使用

先说说上次在讲case语句用法中提到的在Ubuntu中有时候写的脚本不能正常运行的问题吧,虽然还没搞懂,不过似乎只需要把那个运行不对的脚本删掉重新在建一个然后就可以运行出来了,如果有大神知道这方面的bug的话希望能够指点一下萌新。



今天来看看循环结构while和until的使用举例吧


while 测试条件

do

     语句1

     语句2


done


测试条件:条件满足就循环,直到条件不满足就退出循环

#!/bin/bash
##filename:guess_number.sh
#对被猜的数num进行赋值
#$RANDOM是一个系统随机数的环境变量,模100运算用于生成1~100的随机整数

num=$((RANDOM%100))

#使用永真循环、条件退出的方式接收用户的猜测并进行判断
while [ 1 ]   #或((1))或空语句:
do
        read -p "Please input a number[1..100]:"  user_num
        if [ $user_num -lt $num ]; then
                echo "The number you inputed is less then my NUMBER."
        elif [ $user_num -gt $num ]; then
                echo "The number you inputed is greater then my NUMBER."
        elif [ $user_num -eq $num ]; then
                echo "Congratulate:my NUMBER is $num."
                break
        fi
done


until循环 测试条件


     do


        语句1


        语句2


     done

条件不满足循环,直到满足就退出循环

#!/bin/bash
##filename:until-user_online_to_write.sh
username=$1
if [ $# -lt 1 ]; then
        echo "Usage:`basename $0`  <username>  {<message>}"
        exit 1
fi
if grep "^$username:" /etc/passwd>/dev/null ; then  :
else
        echo "$username is not a user on this system."
        exit 2
fi
until who|grep "$username" > /dev/null ; do
        echo "$useraname is not logged on."
        sleep 15
done
shift;msg=$*
[[ X"$msg" == "X" ]] && msg="Hello,$username"
echo "$msg" | write $username
这里先发送消息“Are you ok?”给用户test,然后用户尚未登陆

登陆用户test,过几秒之后收到之前发送的消息


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值