shell脚本:循环结束语句二

shell脚本-循环结束语句二

  • 二、循环结束语句:
    • 1.break:跳出循环。
    • 2.continue:
    • 3.while:
    • 4.until:条件不成立时,跳出循环。
    • 5.总结:
  • 三、操作演练:

二、循环结束语句:

1.break:跳出循环。

(1)作用:控制循环次数,执行后,立即跳出当前循环,不会继续执行后续的代码。

[root@localhost ~]# vim 30.sh
for i in {1..3}
do
 for j in {1..5}
 do
  if [ $j -eq 3 ]
  then
  break 2 #先停内循环,外循环一并终止 
 fi
 echo $j
 done
done
[root@localhost ~]# sh 30.sh
1
2

2.continue:

(1)定义:满足条件,只跳出当前循环,不影响后续。

(2)作用:在循环内部跳过本次循环,并继续下一次循环。

[root@localhost ~]# vim continue.sh
for i in {1..5}
do
 for j in {1..5}
 do
 if [ $j -eq 3 ]
 then
 continue
 fi
 echo $j
 done
done
[root@localhost ~]# sh continue.sh 
1
2
4
5
1
2
4
5
1
2
4
5
1
2
4
5
1
2
4
5

shell脚本:循环结束语句二_第1张图片

shell脚本:循环结束语句二_第2张图片

#猜数字

con=0
num=$(($RANDOM%100+1))
for ((;;))
do
let con++
read -p "请输入一个数字:" b
 if [ $b -eq $num ]
 then
  echo "bingo,一共猜了${con}次"
  break
 elif [ $b -gt $num ]
 then
  echo "猜大了"
 else
  echo "小了" 
 fi
done

3.while:

(1)定义:重复测试某条件,只要条件成立,反复执行。(适合死循环)

1.用while循环计算【1..10】的和。
[root@localhost ~]# vim while.sh
i=0
sum=0
while [ $i -lt 10 ]
do
let i++
sum=$(($sum+$i))
done
echo $sum
[root@localhost ~]# sh while.sh 
55
2.用while循环批量创建用户并添加密码。
[root@localhost ~]# vim while1.sh
i=0
while [ $i -lt 5 ] 
do
 useradd stu${i}
 echo "123" | passwd --stdin stu${i} &>/dev/null
  if [ $? -eq 0 ]
   then
    echo "用户被创建"
   else
    echo "用户已存在"
fi
let i++
done
[root@localhost ~]# sh while1.sh 
useradd:用户“stu0”已存在
用户被创建
useradd:用户“stu1”已存在
用户被创建
useradd:用户“stu2”已存在
用户被创建
useradd:用户“stu3”已存在
用户被创建
useradd:用户“stu4”已存在
用户被创建

4.until:条件不成立时,跳出循环。

(1)实操:

1.用until计算1-100的和:
[root@localhost ~]# vim 305.sh
sum=0
i=1
until [ $i -gt 100 ]
do
 sum=$[$sum+$i]
 let i++
done
echo $sum
[root@localhost ~]# sh 305.sh 
5050

5.总结:

for while until
(1)for :主要用于已知循环次数
(2)while:条件满足才执行循环,不满足就退出循环,在绝大多数情况,while和for可以通用,while更好用死循环until条件不满足才能循环,满足条件退出,一般不用循环控制语句:
(3)continue:跳出当前的循环,后续条件继续执行
(4)break:跳出当前循环,结束整个循环。多个循环条件,后面可以跟上数字,默认1。2:控制两层,3:控制三层。

三、操作演练:

1.逛淘宝选购商品,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,购买如果不再继续逛的话进行购物车结算总额。

vim 1.sh
sum=0
for ((;;))
do
 for ((;;))
 do
  echo "1.衣服售价500元"
  echo "2.裤子售价400元"
  echo "3.鞋子售价350元"
  echo "4.帽子售价150元"
  echo "5.袜子售价50元"
  read -p "请输入要购买的商品序号:" a
  case $a in
  1)
  echo "衣服已加入购物车,是否继续购买?"
  let sum+=500
  ;;
  2)
  echo "裤子已加入购物车,是否继续购买?"
  let sum+=400
  ;;
  3)
  echo "鞋子已加入购物车,是否继续购买?"
  let sum+=350
  ;;
  4)
  echo "帽子已加入购物车,是否继续购买?"
  let sum+=150
  ;;
  5)
  echo "袜子已加入购物车,是否继续购买?"
  let sum+=50
  ;;
  *)
  echo "欢迎下次光临"
  break
  esac
done
read -p "继续购物还是结算?:" c
if [ $c == y ]
then
continue
elif [ $c == n ]
then
 echo "欢迎下次选购,本次消费共计$sum元"
break
else
 echo "请正确输入"
fi
done
[root@localhost ~]# sh 301.sh 
1.衣服售价500元
2.裤子售价400元
3.鞋子售价350元
4.帽子售价150元
5.袜子售价50元
请输入要购买的商品序号:1
衣服已加入购物车,是否继续购买?
1.衣服售价500元
2.裤子售价400元
3.鞋子售价350元
4.帽子售价150元
5.袜子售价50元
请输入要购买的商品序号:6
欢迎下次光临
继续购物还是结算?:n
欢迎下次选购,本次消费共计500元

2.shell 计算器实现加减乘除和取余。

[root@localhost ~]# vim 302.sh 

#!/bin/bash
read -p "请输入第一个数:" a
read -p "请输入第二个数:" b
read -p "请输入运算符:" c
for ((i=1;i<=5;i++))
do
case $c in
+)
 num1=$[$a+$b]
 echo "$a$c$b=$num1"
;;
-)
 num2=$[$a-$b]
 echo "$a$c$b=$num2"
;;
\*)
 num3=$[$a*$b]
 echo "$a$c$b=$num3"
;;
/)
 num4=$[$a/$b]
 echo "$a$c$b=$num4"
;;
%)
 num5=$[$a%$b]
 echo "$a$c$b=$num5"
;;
esac
break
done
[root@localhost ~]# sh 302.sh 
请输入第一个数:2
请输入第二个数:3
请输入运算符:+
2+3=5

3.打印出某个目录下的所有文件。

[root@localhost ~]# vim 303.sh 

for file in { ls /opt/* }
do
 echo $file
done
[root@localhost ~]# sh 303.sh 
{
ls
/opt/abc.txt
/opt/billkin.txt
/opt/kritt
/opt/kritt.txt
/opt/rh
/opt/wangz
/opt/wangz.txt
}

4.利用 for 循环将多个文本文件内容合并为一个文件。

[root@localhost ~]# vim 304.sh
for i in /root/*.sh
do
 cat "$i" >> fang.txt
done

in { ls /opt/* }
do
echo $file
done
[root@localhost ~]# sh 303.sh
{
ls
/opt/abc.txt
/opt/billkin.txt
/opt/kritt
/opt/kritt.txt
/opt/rh
/opt/wangz
/opt/wangz.txt
}


4.利用 for 循环将多个文本文件内容合并为一个文件。

[root@localhost ~]# vim 304.sh
for i in /root/*.sh
do
cat “$i” >> fang.txt
done


你可能感兴趣的:(vim,linux,编辑器,运维,bash)