Shell之流程控制

目录

  • Shell之流程控制
    • 参考
    • 条件语句
    • 循环语句
    • 跳出循环
    • 退出程序
    • 空语句
    • 写一个小程序

Shell之流程控制

Written by Zak Zhu

学习python风格, 优雅规范书写shell代码

参考

  • 菜鸟教程/Shell 流程控制(https://www.runoob.com/linux/linux-shell-process-control.html)
  • 使用shell中if语句的使用(https://www.cnblogs.com/aaronLinux/p/7074725.html)
  • 鸟哥私房菜
  • codingstandards/我使用过的Linux命令之: (冒号) - 啥也不做(http://codingstandards.iteye.com/blog/1160298 )

在Shell Script中, 命令运行是从上而下, 从左至右的分析与运行的

条件语句

语法:

# if else语句
if CONDITION
then
    COMMAND1
else
    COMMAND2
fi

# if elif else语句
if CONDITION1
then
    COMMAND1
elif CONDITION2
then
    COMMAND2
else
    COMMAND3
fi  

实例:

a=100
b=66

if [ "${a}" -gt "${b}" ]
then
    echo "a > b"
elif [ "${a}" -lt "${b}" ]
then
    echo "a < b"
else
    echo "a = b"
fi

Shell之流程控制_第1张图片


循环语句

While循环

语法:

while CONDITION
do
    COMMAND
done

实例:

n=0
while [ "${n}" -lt "10" ]
do
    echo ${n}
    let n++
done

Shell之流程控制_第2张图片

For循环

语法:

for I in item1 item2 ... itemN
do
    COMMAND
done

实例:

for postfix in a b c
do
    echo "server${postfix}"
done

Shell之流程控制_第3张图片


跳出循环

Break

break # 立马跳出循环, 不再执行

Continue

continue # 跳出本次循环, 继续下一轮循环


退出程序

语法:

exit [RETURN_CODE]

空语句

冒号(:)可以作为占位符, 此时和Python中的pass语句作用相同

实例:

if [ "3" > "1" ]
then
: 
fi

Shell之流程控制_第4张图片


写一个小程序

代码如下:

#!/bin/bash

#####################################
# @Author: ZakZhu
# @Created Time: 2019-09-30 11:35:06
# @Description:                                              
#####################################

right_password="123456"

echo "密码可选字符如下所示:"
for i in $(seq 0 9)
do
  echo ${i}
done

n=0
while [ "${n}" -lt "3" ]
do
  let n+=1
  read -n 6 -sp '请输入密码: ' password

  if [ "${password}" == "${right_password}" ] 
  then
    echo -e "\n密码正确^_^\n"
    break
  else  
    echo -e "\n密码错误>_<\n"
      if [ "$n" != 3 ] 
      then
        continue
      fi  
  fi  
  
  echo -e "密码错误3次!!!\n"
  exit 3
done

运行结果:

  1. 第一次输入, 密码就是正确的

    Shell之流程控制_第5张图片

  2. 第一次输入, 密码错误; 第二次输入, 密码正确

    Shell之流程控制_第6张图片

  3. 前两次输入, 密码都是错误; 第三次输入, 密码正确

    Shell之流程控制_第7张图片

  4. 三次输入, 密码都是错误的, 退出程序

    Shell之流程控制_第8张图片

你可能感兴趣的:(Shell之流程控制)