Shell之流程控制

Shell之流程控制

😄 Written by Zak Zhu

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

参考

在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

1


循环语句

While循环

语法:

while CONDITION
do
	COMMAND
done

实例:

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

2

For循环

语法:

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

实例:

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

3


跳出循环

Break

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

Continue

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


退出程序

语法:

exit [RETURN_CODE]

空语句

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

实例:

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

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. 第一次输入, 密码就是正确的

    5

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

    6

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

    8

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

    7

posted @ 2019-09-30 14:49  ZakZhu  阅读(196)  评论(0编辑  收藏  举报