(五)Shell编程之条件结构、循环结构

本文介绍了Shell脚本中的多种循环结构,包括for、while、until及select循环,并通过示例展示了break和continue命令的用法。

一、条件结构case

二、循环结构for

三、循环结构-while循环

 

echo '按下 <CTRL-D> 退出'
echo -n '输入你最喜欢的城市名: '
while read city
do
    echo "是的!$city是一个好地方"
done

四、 循环结构-until

#!/bin/bash
a=0

until [ $a -gt 5 ]
do
    echo $a
    let a++
done

五、循环结构-select

select in 循环用来增强交互性,它可以显示出带编号的菜单,用户输入不同的编号就可以选择不同的菜单,并执行不同的功能。

select in 是 Shell 独有的一种循环,非常适合终端(Terminal)这样的交互场景,C语言、C++、Java、Python、C#等其他编程语言中是没有的。

Shell select in 循环的语法如下:

select name [in words ...]; do commands; done

先来一个栗子🌰:

ctrl+d退出后输出你最后选择的是哪一个选项。

#!/bin/bash
echo "what is your favourite os?"
select name in "Linux" "Windows" "MAC OS" "UNIX" "Android"
do
    echo $name
done
echo "your have selected $name"

注意,select是无限循环(死循环),输入空值,或者输入的值无效,都不会结束循环,只有遇到break语句,或者按下Ctrl+D组合键才能结束循环。

完整实例:

select in 通常和 case in 一起使用,在用户输入不同的编号时可以做出不同的反应。

修改上面的代码,加入 case in 语句:

用户只有输入正确的编号才会结束循环,如果输入错误,会要求重新输入。 

六、break

break命令允许跳出所有循环(终止执行后面的所有循环)

下面的例子中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break命令。

实例

#!/bin/bash
while :
do
    echo -n "输入 1 到 5 之间的数字:"
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的!游戏结束"
            break
        ;;
    esac
done

七、continue

continue命令与break命令类似,只有一点差别,他不会跳出所有循环,仅仅跳出当前循环。

#!/bin/bash
while :
do
    echo -n "输入 1 到 5 之间的数字:"
    read aNum
    case $aNum in
        1|2|3|4|5) echo "你输入的数字为 $aNum!"
        ;;
        *) echo "你输入的数字不是 1 到 5 之间的!游戏结束"
            continue
            echo "游戏结束"
        ;;
    esac
done

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值