首页 > 系统服务 > 详细

shell流程控制

时间:2019-05-09 10:31:11      阅读:115      评论:0      收藏:0      [点我收藏+]

  在任何编程语言中,都需要流程控制来改变程序的运行顺序。在shell脚本中,流程控制包括条件语句(if),循环语句(for,while),选择语句(case),下面将通过例子介绍一下各个语句的使用方法。

一、if语句

格式:if list; then list; [ elif list; then list; ] ... [ else list; ] fi

1、单分支

if 条件表达式; then

命令

fi

例子:

#!/bin/bash
N=10
if [ $N -gt 5 ]; then
  echo yes
fi

# bash test.sh
yes

2、双分支

if 条件表达式; then
  命令
else
  命令
fi

例子:

#!/bin/bash
N=10
if [ $N -lt 5 ]; then
  echo yes
else
  echo no
fi

# bash test.sh
no

3、多分支

if 条件表达式; then
  命令
elif 条件表达式; then
  命令
else
  命令
fi

例子:

#!/bin/bash
N=$1
if [ $N -eq 3 ]; then
  echo "eq 3"
elif [ $N -eq 5 ]; then
  echo "eq 5"
elif [ $N -eq 8 ]; then
  echo "eq 8"
else
  echo "no"
fi

其中$1表示接受用户输入参数

二、for语句

格式:for name [ [ in [ word ... ] ] ; ] do list ; done

for 变量名 in 取值列表; do
  命令
done

或者

  for 变量名 in 取值列表

  do

  命令

  done

例子:

#!/bin/bash
for i in {1..3}; do
  echo $i
done

# bash test.sh
1
2
3

三、while语句

条件为真就进入死循环;条件为假就退出循环

格式:while list; do list; done

例子:

#!/bin/bash
N=0
while [ $N -lt 5 ]; do
  let N++
  echo $N
done

# bash test.sh
1
2
3
4
5

while语句可以用来编写在后台一直执行的脚本,直接将条件设置为while true

四、break和continue的用法

break 是终止循环。

continue 是跳出当前循环

例子1、在死循环中,满足条件则终止循环

#!/bin/bash
N=0
while true; do
    let N++ if [ $N -eq 5 ]; then
            break
        fi
    echo $N
done

# bash test.sh
1
2
3
4

例子2、满足条件跳出本次循环

#!/bin/bash
N=0
while [ $N -lt 5 ]; do
    let N++ if [ $N -eq 3 ]; then
            continue
        fi
    echo $N
done

# bash test.sh
1
2
4

五、case语句

case 语句一般用于选择性来执行对应部分块命令。

case 模式名    in
模式 1)
  命令
  ;;
模式 2)
  命令
  ;;
*)
  不符合以上模式执行的命令
esac

例子:

#!/bin/bash
case $1 in
start)
  echo "start."
  ;;
stop)
  echo "stop."
  ;;
restart)
  echo "restart."
  ;;
*)
  echo "Usage: $0 {start|stop|restart}"
esac

# bash test.sh
Usage: test.sh {start|stop|restart}

# bash test.sh start
start.

# bash test.sh stop
stop.

# bash test.sh restart
restart.

 

shell流程控制

原文:https://www.cnblogs.com/zhouby/p/10836392.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!