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
循环语句
While循环
语法:
while CONDITION
do
COMMAND
done
实例:
n=0
while [ "${n}" -lt "10" ]
do
echo ${n}
let n++
done
For循环
语法:
for I in item1 item2 ... itemN
do
COMMAND
done
实例:
for postfix in a b c
do
echo "server${postfix}"
done
跳出循环
Break
break # 立马跳出循环, 不再执行
Continue
continue # 跳出本次循环, 继续下一轮循环
退出程序
语法:
exit [RETURN_CODE]
空语句
冒号(:)可以作为占位符, 此时和Python中的pass语句作用相同
实例:
if [ "3" > "1" ]
then
:
fi
写一个小程序
代码如下:
#!/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
运行结果:
-
第一次输入, 密码就是正确的
-
第一次输入, 密码错误; 第二次输入, 密码正确
-
前两次输入, 密码都是错误; 第三次输入, 密码正确
-
三次输入, 密码都是错误的, 退出程序