Sheel脚本攻略--continue与break、echo里常用的转义符、简易淘宝购物脚本


一、continue与break

1.break和continue的区别以及作用

  • break和continue都是用来控制循环结构的,主要是停止循环
  • break
    • 有时候我们想在某种条件出现的时候终止循环而不是等到循环条件为false才终止
    • 这时我们可以使用break来完成。break用于完全结束一个循环,跳出循环体执行循环后面的语句
  • continue
  • continue和break有点类似,区别在于continue只是终止本次循环,接着还执行后面的循环,break则完全终止循环
  • 可以理解为continue是跳过当次循环中剩下的语句,执行下一次循环

2.break语句结构

mark

  • break语句用于终止整个循环的执行
break
将用于以下break语句退出循环:

break n
这里n指定的第n个封闭的循环退出

3.break应用示例

  • 试试从输出1~10里插一个break
    mark
  • 能看到这里本来能输出到10的值只输出到5了
    mark

4. continue语句结构

mark

  • continue语句break命令类似,但它会导致当前迭代的循环退出,而不是整个循环
  • 这种参数是有用的,当一个错误已经发生,但你想尝试执行下一个循环迭代
continue
和break语句一样,一个整数参数可以给continue命令跳过嵌套循环的命令

continue n
这里n指定第n个封闭循环 continue 

5.continue应用示例

mark
mark


二、常用转义符-echo

1.概述

echo -n     表示不换行输出
echo -e     输出转义符,将转义后的内容输出到屏幕上
  • 重点,给我背,不然就抄!
常用转义符 解释
\b 转义后相当于按退格键(backspace) ,但前提是"b"后面存在字符; "\b"表示删除前一个字符, "\bb"表示删除前两个字符
\c 不换行输出,在"\c"后面不存在字符的情况下,作用相当于 echo -n; 但是当"\c"后面仍然存在字符时,"\c"后面的字符将不会被输出
\n 换行,被输出的字符从"\n"处开始另起一行
\f 换行,但是换行后的新行的开头位置连接着上一行的行尾
\v 与\f相同
\t 转以后表示插入tab,即横向制表符
\r 光标移至行首,但不换行,相当于使用"\r"以后的字符覆盖"\r"之前同等长度的字符;但是当"\r"后面不存在任何字符时,"\r"前面的字符不会被覆盖
\ 表示插入""本身

2.练习

[root@xcf ~]# echo -n "123456"
123456[root@xcf ~]# 
[root@xcf ~]# echo -e "123456"
123456

[root@xcf ~]# echo -e "123\b456"
12456
[root@xcf ~]# echo -e "123\b\b456"
1456
[root@xcf ~]# echo -e "123\b\b\b456"
456
[root@xcf ~]# echo -e "123456\b"
123456

[root@xcf ~]# echo -e "123\c456"
123[root@xcf ~]# echo -e "123456\c"
123456[root@xcf ~]# 
[root@xcf ~]# echo -e "\c123456"
[root@xcf ~]# 

[root@xcf ~]# echo -e "123\n456"
123
456
[root@xcf ~]# echo -e "123\f456"
123
   456
[root@xcf ~]# echo -e "123\v456"
123
   456

[root@xcf ~]# echo -e "123\t456"
123	456

[root@xcf ~]# echo -e "123\r456"
456
[root@xcf ~]# echo -e "123456\r"
123456

[root@xcf ~]# echo -e "123\\456"
123\456

三、留给你周末回家的大实验:写一个淘宝购物脚本

1.需求

  • 你进入了一家军用品店,共有五种商品给你选购
  • 每次选购完都会提示是否继续购物,如不再继续的话会结算购物车
  • 军大衣1000元,保暖裤500元,作战靴250元,丛林迷彩帽150元,冬袜50元
  • 每次选购完都会提示用户是否继续购物
  • 如果不再继续购物的话会进行购物车总额结算

2.操作一把

  • 以下在for语句中的do···done循环体内用到了case以及if语句,嵌套使用
  • 活学活用,方法都是人想出来的,不只是这一种
[root@localhost opt]# vim gouwu.sh

#!/bin/bash

sum=0

for ((;;))
do

echo "1:军大衣:1000元,2:保暖裤500元,3:作战靴250元,4:丛林迷彩帽150,5:冬袜50元"

read -p "请选择您想要购买的商品:" sg

case $sg in
1)
        echo "您已购买了一件大衣,花费1000元"
        let sum+=1000
;;
2)
        echo "您已购买了一条保暖裤,花费500元"
        let sum+=500
;;
3)
        echo "您已购买了一双作战靴,花费250元"
        let sum+=250
;;
4)
        echo "您已购买了一顶丛林迷彩帽,花费150元"
        let sum+=150
;;
5)
        echo "您已购买了一双冬袜,花费50元"
        let sum+=50
;;
*)
        echo "您本次消费共计$sum元,欢迎下次光临~"
        break
esac

read -p "您选择继续购物还是结算购物车?(yes/no)" pay

if [ $pay = yes ]
        then
                continue
elif [ $pay = no ]
        then
                echo "欢迎下次光临,您本次购物共计消费$sum元"
                break
else
        echo "请您正确输入"      
fi

done

猜你喜欢

转载自blog.csdn.net/weixin_51486343/article/details/111463304