Shell中的循环
2016-06-30 22:50
411 查看
工作中,我们经常会有重复进行某一个动作的需求。有的需求是知道重复某个操作多少次,有的是不知道需要重复多少次。所以我们需要根据不同的需求来判断到底需要使用哪种循环控制语句,主要包含:for循环, while循环, until循环。以下一次进行说明。
一.until循环
until循环主要写法如下,说明:当condition不满足时会执行,当condition为真时停止循环,往往用于不知道到底需要执行多少次
until condition ; do
commands
done
二.while循环
while循环同until循环一样,用于不可预知循环次数的情况下使用。主要用于condition满足的情况下进行执行:
while condition
do
commands
done
案例1:将所有的参数打印出来
while [ $# -ne 0 ]; do
echo $1
shift 1-->此命令用于将传入参数的位置往左移动指定数字的位置,例如:传入A、B、C,那么他们分别在$1 $2 $3的位置,shift 1以后B就在$1的位置,C就在$2的位置,$3变空
done
案例2:要求用户输入介于20到10之间的数(不满足条件则一直要求输入)
while :
do
read -p "Enter a number between 20 and 30: " x
case $x in
*[!0-9]*)##判定是否包含非数字的字符,如果是则继续提示
continue
;;
*)
if [ $x -lt 20 ] ; then
continue
elif [ $x -gt 30 ] ; then
continue
else
echo $x && break
fi
;;
esac
done
三.For循环
For循环包含多种写法,可以是字符组也可以是数组等等。各个写法说明如下:
写法一:字符组
for var in Canada USA Mexico
do
printf "%s\n" "$var"
done
写法二:数字范围(非标准写法)
for ((n=1; n<=10; ++n))
do
echo "$n"
done
四.跳出循环与重置循环
当某些时候需要在循环体里面控制是否要跳出循环,或者重新开始循环(跳过后续命令)。可以通过break和continue分别实现。
break案例:
for n in a b c d e
do
while true ##循环开始时就指定成死循环
do
if [ $RANDOM -gt 20000 ] ##$RANDOM表示生成一个随机数
then
printf .
break 2 ##跳出while和for两层循环
elif [ $RANDOM -lt 10000 ]
then
printf ''''
break ##仅跳出while循环
fi
done
done
continue案例:
for n in {1..9}
do
x=$RANDOM
[ $x -le 20000 ] && continue ##当随机数小于等于20000时重新开始新的循环
echo "n=$n x=$x"
done
一.until循环
until循环主要写法如下,说明:当condition不满足时会执行,当condition为真时停止循环,往往用于不知道到底需要执行多少次
until condition ; do
commands
done
二.while循环
while循环同until循环一样,用于不可预知循环次数的情况下使用。主要用于condition满足的情况下进行执行:
while condition
do
commands
done
案例1:将所有的参数打印出来
while [ $# -ne 0 ]; do
echo $1
shift 1-->此命令用于将传入参数的位置往左移动指定数字的位置,例如:传入A、B、C,那么他们分别在$1 $2 $3的位置,shift 1以后B就在$1的位置,C就在$2的位置,$3变空
done
案例2:要求用户输入介于20到10之间的数(不满足条件则一直要求输入)
while :
do
read -p "Enter a number between 20 and 30: " x
case $x in
*[!0-9]*)##判定是否包含非数字的字符,如果是则继续提示
continue
;;
*)
if [ $x -lt 20 ] ; then
continue
elif [ $x -gt 30 ] ; then
continue
else
echo $x && break
fi
;;
esac
done
三.For循环
For循环包含多种写法,可以是字符组也可以是数组等等。各个写法说明如下:
写法一:字符组
for var in Canada USA Mexico
do
printf "%s\n" "$var"
done
写法二:数字范围(非标准写法)
for ((n=1; n<=10; ++n))
do
echo "$n"
done
四.跳出循环与重置循环
当某些时候需要在循环体里面控制是否要跳出循环,或者重新开始循环(跳过后续命令)。可以通过break和continue分别实现。
break案例:
for n in a b c d e
do
while true ##循环开始时就指定成死循环
do
if [ $RANDOM -gt 20000 ] ##$RANDOM表示生成一个随机数
then
printf .
break 2 ##跳出while和for两层循环
elif [ $RANDOM -lt 10000 ]
then
printf ''''
break ##仅跳出while循环
fi
done
done
continue案例:
for n in {1..9}
do
x=$RANDOM
[ $x -le 20000 ] && continue ##当随机数小于等于20000时重新开始新的循环
echo "n=$n x=$x"
done
相关文章推荐
- android wifi 无线调试
- 运维入门
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Linux Shell常用技巧
- Shell 脚本编程陷阱
- shell字符串操作详解
- Shell中删除某些文件外所有文件的3个方法
- Ruby中执行Linux shell命令的六种方法详解
- VB使用shell函数打开外部exe程序的实现方法
- Shell编程的一些知识集合
- Shell中的for和while循环详细总结
- 什么是Shell?Shell脚本基础知识详细介绍
- Shell脚本中引用、调用另一个脚本文件的2种方法
- Shell脚本解压rpm软件包
- Linux Shell 数组建立及使用技巧
- Shell脚本实现复制文件到多台服务器的代码分享
- Shell脚本实现批量替换文件内容
- Shell脚本实现的一个简易Web服务器例子分享
- linux Shell学习笔记第五天