Shell脚本中的for case while循环流程控制语句的使用

shell作为一种脚本编程语言,同样包含循环、分支等其他程序控制结构,从而轻松完成更加复杂、强大的功能。

 

编写脚本的思路

1  明确脚本的功能

2  编写脚本时会使用到那些命令 ?  

3  把变化的数据使用变量表示

4  选择适合的流程控制  (选择 、 循环 、分支)

 

 

使用for循环语句

    在工作中,经常遇到某项任务需要多次执行,而每次执行仅仅是处理对象不一样,其他命令都相同。使用简单的if语句已经难以满足要求,编写全部代码将困难重重,而for循环语句将很好的解决类似的问题

1. for语句的结构    

    使用for循环语句时,需要指定一个变量及可能的取值列表,针对每一个不同的取值重复执行相同的命令,直到变量值用完退出循环

for的语法结构:

for-do-done

语法格式:

for 变量名 in 列表内容

do

  commands

done

或:

for 变量名 in 列表内容 ; do

  commands

done

 

 

 

使用while循环语句

    for语句适用于列表对象无规律,且列表来源以固定的场合。而对于要求控制循环次数、操作对象按数字顺序编号、按特定的条件重复操作等情况,则更适合于while循环语句

1. while语句的结构

    使用while循环语句时,可以根据特定的条件反复执行一个命令序列,直到该条件不在满足为止

    需要注意的是要避免出现while ture 的死循环

语法格式如下:

while 测试命令

do

命令

done

例:降序输出10到1

 

 

 

 

使用case分支语句

    case语句主要适用于以下情况:某个变量存在多种取值,需要对其中的每一种取值分别执行不同的命令序列。与多分支if语句相识,只是if语句需要判断多个不同的条件,而case只是判断一个变量的不同取值

1. case语句的结构

case     变量或表达式     in

              变量或表达式1)

                     命令序列1

                     ;;

            变量或表达式2)

                     命令序列2

                     ;;

                     ……

                     *)  

                     默认命令序列

 esac

执行流程:

首先使用“变量或表达式”的值与值1进行比较,若取值相同则执行值1后的命令序列,直到遇见双分号“;; ”后跳转至esac,表示分支结束;

若与值1不相匹配,则继续与值2 进行比较,若取值相同则执行值2 后的命令序列,直到遇见双分号“;; ”后跳转至esac,表示结束分支。

依次类推,若找不到任何匹配的值,则执行默认模式“ *) ”后的命令序列,直到遇见esac后结束分支

注意事项:

“变量或表达式”后面必须为单词in,每一个“变量或表达式”的值必须以右括号结束。取值可以为变量或常数。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;

匹配中的值可以是多个值,通过|”来分隔

 

 

例:编写一个备份,拷贝的交互式脚本

[root@www script]# cat case-1.sh
#!/bin/bash
cat <<eof
*****************
**1. backup
**2. copy
**3. quit
*****************

eof
read -p "input your choose: " OP
case $OP in
1|backup)
echo "Backup..."
;;

2|copy)
echo "Copy..."
;;

3|quit)
exit
;;
*)
echo input error
esac

 

使用嵌套循环输出99乘法表

[root@www script]# cat for-for.sh
#!/bin/bash
for i in `seq 9`
do
  for j in `seq $i`
  do
    echo -n "$i*$j= `echo $(($i*$j))`"
  done
  echo " "
done

注:外层循环循环行,内层循环循环列

规律:  内层循环的变量<=外层循环的变量

执行效果如下图

 

转载于:https://www.cnblogs.com/fusheng11711/p/10790252.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值