[b]for循环的使用[/b]
[b]while循环使用[/b]
这里有个简单的事情记录一下就当是回顾一下之前的命令
这样写运行会出现一个问题,看看执行结果
修改一下
运行的结果正常
继续一个wille的例子
执行时候会让你输入对应的应用就会执行你相应的操作
注意事项
[b]until 循环使用[/b]
执行后的结果
以上我们说了闹事的循环,接下来我们怎么能让它不闹事呢,那就需要跳出循环
[b]跳出循环[/b]
之前在使用时候使用过“;;”
那个只是在swich中使用不让一箭穿心的运行,算是缓解循环的一种,
[i]break命令[/i]
运行结果
运行结果
[i]使用continu[/i]
这里没有输出Game is over
[i]奇偶输出[/i]
输出结果
#输出字符串中的字符,没有进行循环
for str in '这 个 字符 串 不进行 循环'
do
echo -e "$str"
done
#for循环的另一种使用
#for((i=0;i<$#;i++))
for((i=0;i<10;i++))
do
echo "输出 -$i"
done
#显示以.bash开头的文件
for FILE in $HOME/.bash*
do
echo $FILE
done
运行后的结果为
运行输出 1
运行输出 2
运行输出 3
运行输出 4
这 个 字符 串 不进行 循环
输出 -0
输出 -1
输出 -2
输出 -3
输出 -4
输出 -5
输出 -6
输出 -7
输出 -8
输出 -9
[b]while循环使用[/b]
这里有个简单的事情记录一下就当是回顾一下之前的命令
#使用while循环
count=10
while [ $count -gt 0 ]
do
count=`expr $count-1`
echo "当前的count值是:$count"
done
这样写运行会出现一个问题,看看执行结果
当前的count值是:10-1
for_while_util.sh: line 46: [: 10-1: integer expression expected
修改一下
count=10
while [ $count -gt 0 ]
do
count=`expr $count - 1` #符号周边加上空格
echo "当前的count值是:$count"
done
#下个办法就是声明类型
#-i 声明为整数
#-a 声明未数组
#-f 声明未函数
#-r 声明未只读
declare -i count=10
while [ $count -gt 0 ]
do
count=`expr $count-1` #符号周边可以不是空格
echo "当前的count值是:$count"
done
运行的结果正常
当前的count值是:9
当前的count值是:8
当前的count值是:7
当前的count值是:6
当前的count值是:5
当前的count值是:4
当前的count值是:3
当前的count值是:2
当前的count值是:1
当前的count值是:0
继续一个wille的例子
#while循环可用于读取键盘信息
echo "type<Ctr+D> to terminate"
echo -n '输入您最喜欢的应用:'
while read FLIM
do
echo "您喜欢的应用是:$FLIM"
done
执行时候会让你输入对应的应用就会执行你相应的操作
type<Ctr+D> to terminate
输入您最喜欢的应用:weix
您喜欢的应用是:weix
注意事项
#在shell中while的死循环有多种,只要知道什么情况下会进入死循环就好,判断boolean和是否是空的就知道是不是死循环了
#while true=while :=while [ 0 ]=while [ 1 ]=while [ 任意的非判断字符 ]
i=0.2
while [ $(echo "$i <= 1.0" | bc -l) -eq 1 ] #这里需要又-eq,如果没有就会成为以下的结果
do
b=$(echo "$i <= 1.0" | bc -l)
echo $b "echo \"$i <= 1.0\" | bc -l"
echo $i
i=$(echo "$i + 0.2" | bc -l)
done
echo "done"
#这个会一直判断为true
while [ 0 ]
do
echo "while is 0"
done
#这个也会一直循环
while [ 1 ]
do
echo "while is 1"
done
[b]until 循环使用[/b]
u=0
until [ ! $u -lt 10 ] #!号后边一定记得空格
do
echo "使用until输出:$u"
u=`expr $u + 1` #这里不加空格会出大事,一直会循环,你懂得
done
执行后的结果
使用until输出:0
使用until输出:1
使用until输出:2
使用until输出:3
使用until输出:4
使用until输出:5
使用until输出:6
使用until输出:7
使用until输出:8
使用until输出:9
以上我们说了闹事的循环,接下来我们怎么能让它不闹事呢,那就需要跳出循环
[b]跳出循环[/b]
之前在使用时候使用过“;;”
那个只是在swich中使用不让一箭穿心的运行,算是缓解循环的一种,
[i]break命令[/i]
#使用break跳出循环
while :
do
echo -n "input a number between 1 to 5:"
read anum
case $anum in
1|2|3|4|5)echo "your write number is $anum"
;;
*)echo "your number must between 1 and 5"
break
;;
esac
done
运行结果
input a number between 1 to 5:g
your number must between 1 and 5
#跳出多层循环时候使用break(n),跳出到第几层就写几
for var in 1 2 3
do
for var1 in 1 2
do
if [ $var -eq 2 -a $var1 -eq 2 ]
then
echo "满足条件我跳出第二次的循环"
break 2
else
echo "循环1=$var 循环2=$var1"
fi
done
done
运行结果
循环1=1 循环2=1
循环1=1 循环2=2
循环1=2 循环2=1
满足条件我跳出第二次的循环
[i]使用continu[/i]
while :
do
echo -n "Input a number between 1 to 5: "
read aNum
case $aNum in
1|2|3|4|5) echo "Your number is $aNum!"
;;
*) echo "You do not select a number between 1 to 5!"
continue
echo "Game is over!"
;;
esac
done
这里没有输出Game is over
[i]奇偶输出[/i]
#使用continu
numbers="1 2 3 4 5 6 7"
for num in $numbers
do
i=`expr $num % 2`
if [ $i -eq 0 ]
then
echo "数字$num 不是奇数!"
continue
fi
echo "数字$num 是奇数"
done
输出结果
数字1 是奇数
数字2 不是奇数!
数字3 是奇数
数字4 不是奇数!
数字5 是奇数
数字6 不是奇数!
数字7 是奇数