shell 流程控制
2018-01-03 本文已影响0人
碎玉长青
条件判断
if 单支流程控制
语法:
if [ 条件 ]
then
指令
fi #结束语句
双分支 if 语句
语法
if [ 条件 ]
then
指令二
else
指令二
fi
实例
read -p "input name : " username
if [ "${username}" == "luban" ]
then
echo "login success"
else
echo "login failed"
fi
多分支if
语法
if [ 条件1 ]
then
指令1
elif [ 条件2 ]
then
指令2
else
指令3
fi
实例
#!/bin/bash
# 多if语句的使用场景
if [ "$1" == "start" ]
then
echo "服务启动中..."
elif [ "$1" == "stop" ]
then
echo "服务关闭中..."
elif [ "$1" == "restart" ]
then
echo "服务重启中..."
else
echo "$0 脚本的使用方式: $0 [ start | stop | restart ]"
fi
case 语句
语法
case 变量名 in
值1)
指令1
;;
值2)
指令2
;;
值3)
指令3
;;
exac
实例
read -p "input name : " username
case "${username}" in
"luban")
echo "success"
;;
"qihao")
echo "success"
;;
*) # 当前面条件都不符合,用* 匹配任意非分支的选择
echo "failed"
;;
exac
循环
for 循环
语法
for 值 in 列表
do
执行语句
done
注意:
”for” 循环总是接收 “in” 语句之后的某种类型的字列表
执行次数和list列表中常数或字符串的个数相同,当循环的数量足够了,就自动退出
对于固定次数的循环,可以通过seq命令来实现,就不需要变量的自增了
实例(命令)
#!/bin/bash
# 遍历当前目录
for file in $(ls)
do
echo "file name : ${file}"
done
实例(列表)
#!/bin/bash
num = $(seq 10) # 生成一个数组从1~10
for i in "${num}"
do
echo "${i}"
done
while
语法
while 条件
do
执行语句
done
实例
#!/bin/bash
cou = 0
while [ $cou -le 5 ]
do
echo "${cou}"
coun = $((cou + 1))
done