(十)shell case, while, until, for, select, break, continue介绍

case in 语句

printf "input number:"
read num
case $num in
        1)
                echo "one"
                ;;
        2)
                echo "two"
                ;;
        *)
                echo "error"
                ;;
esac

(1)   case、in 和 esac 都是 Shell 关键字,num 表示表达式,1表示匹配模式。
        num 既可以是一个变量、一个数字、一个字符串,还可以是一个数学计算表达式,或者是命令的执行结    
        果,只要能够得到 num 的值就可以。
(2)   1可以是一个数字、一个字符串,甚至是一个简单的正则表达式。    
(3)   整体和c语言中的switch case相似  *) 相当于default
printf "input a char"
read -n 1 char

case $char in
        [0-9])
                echo "数字"
                ;;
        [a-z])
                echo "小写字母"
                ;;
        *)
                echo "error"
                ;;
esac

  

while语句

sum=2
while ((sum < 20))
do
        ((sum += i))
        ((i++))
done
echo "the sum is:$sum"

printf "ctr+d结束,输入数字"
while read n
do
        ((sum += n))
done
echo "计算结果为:$sum"

  

until语句

utile: 到了条件才执行,

while: 未到条件才执行,

read num
i=1
until ((i > 3))
do
        echo "num=$num i=$i"
        ((num += i))
        ((i++))
done
echo "the num is:$num"

  

for语句

#c语言风格
sum=0
for((i=1; i<=4; i++))
do
        echo "i=$i"
done

#shell风格
for n in {1..4}
do
        echo "n=$n"
done

#使用shell通配符
for filename in *.sh
do
        echo $filename
done

  

select in 语句

#ctrl+d, break 结束循环 select in 是无限死循环
select num in "china" "english" "bali" "jopan" "break"
do
        echo $num
done

printf "选一个你喜欢的品牌"
select like in "ysl" "dior" "amas" "chanel"
do
        case $like in
                "ysl")
                        echo "口红"
                        break
                        ;;
                "dior")
                        echo "香水"
                        break
                        ;;
                *)
                        echo "重新输入吧"
        esac
done

break 和  continue

Shell 中的 break 和 continue 能够跳出多层循环,也就是说,内层循环中的 break 和 continue 能够跳出外层循环。

break num

continue num

for((i=1; i<=5; i++)); do
        for((j=1; j<=5; j++)); do
                if((i*j==12)); then
                        continue 2
                fi
                printf "%d %d" $i $j
                break 2
        done    
done

  

做一个优秀的程序媛
原文地址:https://www.cnblogs.com/oytt/p/13494832.html