美文网首页
1-24-case流程控制和for、while循环语句的使用

1-24-case流程控制和for、while循环语句的使用

作者: 秋的懵懂 | 来源:发表于2018-07-12 10:49 被阅读0次

时间:2018-06-17 姓名:魏文应


一、控制语句 case

语法格式:

case 变量值 in
  模式1)
    执行相应命令,遇到两个分号,退出(两个分号相当于break)
    ;;
  模式2)
     执行相应命令,遇到两个分号,退出(两个分号相当于break)
    ;;
  *)
    缺省,则执行这里的命令。
esac

上面语法中:

  • 变量值后面必须为in。
  • 每一个匹配模式,以英文右括号结束 )
  • 匹配到模式后,遇到 ;; 结束case语句。
  • esac 表示case语句结束。

比如下面的例子:

#!/bin/bash
clear

echo "*********************"
echo "  1 copy             "
echo "  2 delete           "
echo "  3 backup           "
echo "  4 quit             "

read -p "请输入你的选择:" op
case $op in
        1) echo "your selection is copy."
        ;;
        2) echo "your selection is delete."
        ;;
        3) echo "your selection is backup."
        ;;
        4) echo "your selection is quit."
        ;;
        *) echo "invaild selection"
esac

二、for 循环语句

语法格式:

for 变量 in 名字表
do
命令列表
done

举一个例子:

#!/bin/bash

# 将所需要的变量列举出来
day="sunday monday tuesday wendnesday thursday friday saturday"

# 将day内容依次打印出来。
for x in $day
do
        echo "the day is:$x "
done

再比如:

#!/bin/bash

for i in `seq 9`
do
        echo "num is $i"
done

比如批量创建用户:

#!/bin/bash
ULIST=$(cat ./name.txt)

for UNAME in $ULIST
do
        useradd $UNAME
        echo "123456" | passwd --stdin $UNAME &> /dev/null
done

三、while循环语句

语法格式:

while 条件
do
  命令
done

比如,计算打印1~9的平方:

#!/bin/bash

num=1
while [ $num -lt 10 ]
do
        square=$(expr $num \* $num)
        echo $square
        let num++
done

四、无限循环

可以使用while或者for进行无限循环,有多种方式,比如:

while :
do
  命令
done

或者:

for (( ; ; ))

或者:

while true
do
   命令
done

五、扩展算数运算的方法

使用 (( )) 两个括号的时候,可以扩展shell中的算数运算的使用方法。特点:

  • 在两个括号中,运算可以像C语言一样,比如:a++b--a=a+1等表达式是可用的。
  • 括号内使用变量,可以不使用 $ 符号前缀。
  • 可以进行 逻辑运算四则运算
  • 双括号结构,扩展了 for、while、if 条件测试运算。
  • 支持多个表达式运算,各个表达式之间用 分号分开
echo "这是一个循环例子。"
echo
var1=1
while((var1<100))
do
        echo "它的有效值是:$var1"
        ((var1=var1*2))
done

echo "测试完成"

六、嵌套循环

read -p "请输入你要打印的行数:" line
read -p "请输入你要使用的符号:" char

a=1
while [ $a -le $line ]
do
        b=1
        while [ $b -le $a ]
        do
                echo -n "$char"
                b=`expr $b + 1`
        done
        echo
        a=`expr $a + 1`
done

使用for

#!/bin/bash

read -p "please enter a number :" line

for((i=1;i<=line;i++))
do
        for((j=line-i;j>0;j--))
        do
                echo -n " "
        done
        for((h=1;h<=((2*i-1));h++))
        do
                echo -n "*"
        done
        echo
done

七、跳出循环 break 和 continue 继续

使用 break 跳出循环,使用 continue 继续循环。比如下面的代码:

  • 执行break,while循环就从 break处,跳出当前循环,执行 done后面 的语句。
  • 执行continue,while循环就从 continue处,回到 while 处 继续执行。
#!bin/bash

while true
do
        echo "** 输入1,执行break    **"
        echo "** 输入2,执行continue **"
        echo "** 输入其它,继续循环     **"        

        read -p "请输入对应的数字:" num
        case $num in
                1)      echo "执行了break"
                        break
                ;;
                2)      echo  "执行了continue"
                        continue
                ;;
                *)
                ;;
        esac
        
        echo "没有continue的效果。"
done

echo " while循环结束了,执行了break,程序就跑到这运行了。"

下面是嵌套循环加上continue和break 测试

#!/bin/bash

while true
do
        echo 
        echo "**************************"
        echo "**** 1   copy         ****"
        echo "**** 2   delete       ****"
        echo "**** 3   backup       ****"
        echo "**** 4   no continue  ****"
        echo "**** q   quit         ****"
        echo "**************************"
        read -p "please input options: " sum
        case $sum in
                1)      echo "You choice is copy"
                        read -p "from file:" wen1
                        read -p "to file:" wen2
                        if [ -f $wen1 -a -d $wen2 ];then
                                cp $wen1 $wen2
                                ls $wen2
                                echo "copy file success"
                        elif [ -d $wen1 -a -d $wen2 ];then
                                cp -r $wen1 $wen2
                               ls $wen2
                                echo "copy directory success"
                        else
                                echo "Do not change the directory or file"
                                continue
                        fi
                ;;
                2)      echo "you choice is delete"
                        read -p "from file" wen1
                        if [ -f $wen1 ]; then
                                rm -f $wen1
                                ls $wen1
                                echo "delete file success"
                        elif [ -d $wen1 ];then
                                rm -rf $wen1
                                ls $wen1
                                echo "delete directory success"
                        else
                                echo "Do not change the directory or file"
                                continue
                        fi
                ;;
               3)      echo "you choice is bakcup"
                        read -p "from file :" wen1
                        read -p "to file :" wen2
                        cd $wen2 2 > /dev/null
                        if [ -d $wen2 -o -f $wen1 ];then
                                tar -jcvf $wen1.tar.bz2 $wen1
                        else
                                echo "input error"
                                continue
                        fi
                ;;
                4)      echo "test continue"
                ;;
                q)      echo "you choice is to quit"
                        break
                ;;
                *)      echo "please input again "
                        continue
                ;;
        esac
        echo "no continue"
done

相关文章

  • 学习笔记3-基本流程控制

    基本流程控制 while循环 if else语句 do…while循环 for循环 switch语句 for......

  • 流程控制语句

    流程控制语句 if语句可以单独使用,也可以和多个else连续使用 switch case while循环 例如: ...

  • shell流程控制-while循环语句

    shell流程控制-while循环语句 while循环介绍 while循环语法 while实战 一、while循环...

  • 零基础Java学习第四篇

    流程控制 条件语句 if条件语句 循环语句 while循环语句 for循环语句 循环语句嵌套

  • 控制流程

    控制流程 本节包含内容: For循环 While循环 条件语句 控制转移语句 For循环 for循环用来按照指定的...

  • 1-24-case流程控制和for、while循环语句的使用

    时间:2018-06-17 姓名:魏文应 一、控制语句 case 语法格式: 上面语法中: 变量值后面必须为in。...

  • 2.原生js——流程控制语句

    流程控制语句在JS中是至关重要的。JS中的流程控制语句包括if条件判断语句、for循环语句、while循环语句、d...

  • 20170824 Shell编程进阶(一)

    选择执行:if语句条件判断:case语句循环控制:for语句循环控制:while语句和until语句循环控制:co...

  • do-while语句

    do-while 语句由关键字do 和while 组成,是循环语句中最典型的“先循环再判断”的流程控制结构。 do...

  • Python流程控制

    Python中主要的流程控制包括if(判断)、for(循环)、while(循环)等语句。 一、if语句:常见的if...

网友评论

      本文标题:1-24-case流程控制和for、while循环语句的使用

      本文链接:https://www.haomeiwen.com/subject/timweftx.html