speculiarZZ

导航

shell流程控制

  在任何编程语言中,都需要流程控制来改变程序的运行顺序。在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.

 

posted on 2019-05-09 08:31  投个小三分  阅读(128)  评论(0编辑  收藏  举报