shell脚本的简单使用:六 ——之循环使用

[b]for循环的使用[/b]
#输出字符串中的字符,没有进行循环
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 是奇数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值