shift命令:
用来把参数列表位移指定次数。没有参数的shift把参数变量表向左位移一位。被位移出列表的参数就被永久删除了。通常在while循环中,shift用于读取列表的参数。
例:
while(( $# > 0))
do
echo $*
shift
done
例:
set $(date)
while(( $# > 0))
do
echo $1
shift
done
break命令:
内建break命令用于从循环中强行退出,但是不退出程序。执行break后,程序从关键字done开始执行。break可以指定强行退出循环的层数。如果有3层循环,最外面的为1,中间2,里面3。
continue命令:
continue命令控制跳转到循环的顶部。所有continue命令后面的语句都将被忽略。如果嵌套循环就跳到最内的循环的顶部。如果有三层循环嵌套,最外面的循环号是3,中间2,里面1。(如果continue后面的参数大于嵌套层数,则退出循环)
通过管道重新定向循环:
例:
for i in 7 9 2 3 4 5
do
echo $i
done | sort -n
在后台运行循环:
程序可以不等待循环的结束而连接运行。
for person in bobo jin joe sam
do
mail $person < memo
done &
IFS和循环:
shell的内部域分隔符可以是空格,制表符和换行符。它可以作为命令的分隔符用在例如read,set,for等命令中。如果在列表中使用不同的分隔符,用户可以自己定义这个符号。在修改以前最好把IFS原始符号的值保存在另外一个变量中,这样可以在需要时候恢复默认值。
例:
names=Tom:Dick:Harry:John
oldifs="$IFS"
IFS=":"
for persons in $names
do
echo Hi $persons
done
IFS="$oldifs"
set Jill Jane Jolene
for girl in $*
do
echo Howdy $girl
done
阅读(1644) | 评论(0) | 转发(0) |