小熊 · 2019年09月23日

三分钟掌握linux shell脚本流程控制语法

流程控制

本文章原创首发于公众号:编程三分钟[]()

这一次我们的主题是shell脚本中的流程控制,gif动图所见即所得,语法如下。

if else

#!/bin/bash

if [ $1 == $2 ];then

   echo "a == b"

elif [ $1 -gt $2 ];then

   echo "a > b"

elif [ $1 -lt $2 ];then

   echo "a < b"

else

   echo "error"

fi

[]()

for 循环

#!/bin/bash

for loop in 1 2 3 4 5

do

    echo "The value is: $loop"

done

image.png

[]()

while 循环

#!/bin/bash
i=0
while [[ $i<3 ]]
do
    echo $i
    let "i++"
done

输出

while的判断条件可以从键盘输入,成为交互式的脚本

#!/bin/bash
echo 'press <CTRL-D> exit'
while read num
do
    echo "you input is $num"
done

ps: until循环与while循环相反,until直到判断条件为真才停止,语法同while完全一样就不多介绍了。

[]()

死循环

while true

do

    command

done

或者

for (( ; ; ))
do
    command
done

死循环,使用Ctrl+C退出。

[]()

跳出循环

就是continuebreak

case

#!/bin/bash
case $1 in
    1) echo 'You have chosen 1'
    ;;
    2) echo 'You have chosen 2'
    ;;
    *) echo 'You did not enter a number between 1 and 2'
    ;;
esac

同编程语言中的switch一样,只有语法略微不同 ,esaccase的结束符。

每个模式,用右括号结束),如果没有任何匹配的就用*),每个模式用;;两个分号连一起结束。

case 值 in

模式1)

    command1

    command2

    ...

    commandN

    ;;

模式2)

    command1

    command2

    ...

    commandN

    ;;

esac

image.png

推荐阅读
关注数
1
文章数
11
热爱折腾的程序员开发运维:Linux、go/c++/python、redis/mysql/mq等、算法、自动化等内容。云计算:openstack、k8s、ceph等内容。其他:HA、架构、工具、网络安全、持续集成等内容。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息