• (十)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
    

      

    做一个优秀的程序媛
  • 相关阅读:
    HDU 1050 Moving Tables(贪心)
    HDU 1009 FatMouse' Trade(贪心)
    HDU 1097 A hard puzzle(快速幂)
    HDU 1016 Prime Ring Problem(dfs)
    HDU 1010 Tempter of the Bone(dfs)
    HDU 1003 Max Sum (dp)
    mysql_01 安装
    110.平衡二叉树
    1254.统计封闭岛屿的数目
    897.递归顺序查找树
  • 原文地址:https://www.cnblogs.com/oytt/p/13494832.html
Copyright © 2020-2023  润新知