码迷,mamicode.com
首页 > 其他好文 > 详细

while和until循环

时间:2015-04-30 20:14:41      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:while和until循环

while循环和until :循环次数不定。

一、while循环

1、格式:


while 条件测试;do


 循环体;


done


例:用while求1-100内的所有正整数的和。


#!/bin/bash


declare -i sum=0,i=1


while [ $i -le 100 ];do

let sum+=$i

let i++

done 


echo $sum



例:用while求1-100内的所有偶数的和。


#!/bin/bash


declare -i sum=0,i=2


while [ $i -le 100 ];do

let sum+=$i

let i+=2

done 


echo $sum



例:通过键盘提示用户输入字符,将用户输入的小写字母转换为大写,

    转换一次之后,再次提醒用户输入,再次转换,直到输入quit,

    quit表示退出。



#!/bin/bash


read -p "Enter a word:" word


while [[ "$word" != "quit" ]];do

     echo $word |tr ‘a-z‘ ‘A-Z‘

     read -p "Enter a word again:" word

done



例:提示用户输入一个用户名,如果存在,显示用户UID和SHELL信息,否则,则显示无此用户;

    显示完成后,提示用户再次输入;如果是quit则退出。


#!/bin/bash


read -p "Enter a username:" userName


while [[ "$userName" != "quit" ]];do

if id $userName &> /dev/null;then

   grep "^$userName\>" /etc/passwd |cut -d : -f3,7

  else 

   echo "$userName is not exist."   

fi


read -p "Enter a username again:" userName

done



例:提示用户输入一个用户名,

   如果不存在,提示用户再次输入。

   如果存在,则判定用户是否登录,

   如果未登录,提示“$userName is not here.”,

   则停止5秒钟,再次判断用户是否登录,

   直到用户登录系统,显示“$userName is on”。



#!/bin/bash


read -p "Enter a user name:" userName


while ! id $userName &>/dev/null;do

read -p "Enter a user name again:" userName

done



while ! who | grep "^$userName" &>/dev/null ;do

echo "$userName is not here."

sleep 5

done


echo "$userName is on."


二、until循环:条件不满足,则循环,否则退出(可见于while相反)。


例:用untile循环,求100以内所有正整数之和。


#!/bin/bash


declare -i sum=0


declare -i i=1


untile [ $i -gt 100 ];do

    let sum+=$i

    let i++

done


echo $sum



三、组合条件测试:


1、逻辑与:

  [ condition1 ] && [ condition2 ]

  [ condition1 -a condition2 ]

  [[ condition1 && condition2 ]]

 

注意:&&只能用于双括号 [[ ]]中.


2、逻辑或:


  [ condition1 ] || [ condition2 ]

  [ condition1 -o condition2 ]

  [[ condition1 || condition2 ]]

 

注意:||只能用于双括号 [[ ]]中.


3、使用while循环一次读取文件的一行,直到文件尾部;

while read line ;do


循环体 


done </path/to/somefile



例:取出当前系统上,默认shell为bash的用户


#!/bin/bash


while read line;do


  [[ `echo $line |cut -d: -f7` == "/bin/bash" ]] && echo $line |cut -d: -f1


done </etc/passwd


while和until循环

标签:while和until循环

原文地址:http://8757576.blog.51cto.com/8747576/1641025

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!