Shell编程 --流程控制

Shell编程

Shell是一种程序设计语言。作为命令语言,它交互式解释和执行用户输入的命令或者自动地解释和执行预先设定好的一连串的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。

流程控制

shell编程的流程控制有:if-else语句、for循环、while语句、无限循环、until循环、case … esac、跳出循环。

if-else语句

if 语句:

#!/bin/sh
#if 控制语句

#if 语句语法格式
# if command;
# then
#     code
# fi

if [ `ps -ef | grep -c "ssh"` -gt 1 ];
then
    echo "true"
fi
--------------
true

if else 语法格式:

#else格式

# if command;
# then
#     code
# else
#     code
# fi
if ((10>20))
then
    echo "10是大于20的"
else
    echo "10不大于20"
fi
------------------
10不大于20

elif语法

# elif格式
# if command;
# then
#     code
# elif command2
# then
#     code
# *n
# else
#     code
# fi

a=10
b=20
if [ $a -eq $b ];
then
    echo "a=b"
elif [ $a -gt $b ]
then
    echo "a>b"
elif [ $a -lt $b ]
then
    echo "a<b"
fi
---------------
a<b

循环

for循环

与其他编程语言类似,Shell支持for循环。

for循环一般格式为:

for循环
for i in xxx;
do
    code
done

顺序输出字符串中的字符:

for i in I\'m good at coding;
do
    echo $i
done
------------
I'm
good
at
coding

顺序输出当前列表中的数字:

for loop in 1 2 3 4 5;
do
    echo $loop
done
---------
1
2
3
4
5

while循环

while 循环用于不断执行一系列命令,也用于从输入文件中读取数据。其语法格式为:

#while循环
while condition
do
    code
done
int=1
while [ $int -le 5 ];
do
    echo $int
    let "int++"
done
---------
1
2
3
4
5

死循环

# 死循环
echo "请按ctrl+d结束"
echo -n "请输入你喜欢的电影:"
while read film;
do
    echo "${film}是好电影"
done
=========================
#或
while :
do
    echo "im handsome"
done

until循环

格式:

# until 循环 直到条件为真为止
until condition
do
    command
done
a=0
until [ ! $a -lt 10 ]
do
    echo $a
    a=`expr $a + 1`
done
---------
0
1
2
3
4
5
6
7
8
9

case … esac

case … esac 为多选择语句,与其他语言中的 switch … case 语句类似,是一种多分支选择结构,每个 case 分支用右圆括号开始,用两个分号 ;; 表示 break,即执行结束,跳出整个 case … esac 语句,esac(就是 case 反过来)作为结束标记。

可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

格式:

在这里插入图片描述

case 工作方式如上所示,取值后面必须为单词 in,每一模式必须以右括号结束。取值可以为变量或常数,匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;。

取值将检测匹配的每一个模式。一旦模式匹配,则执行完匹配模式相应命令后不再继续其他模式。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。

#!/bin/sh
# case esac
echo "请输入1-4之间的数字"
read -p "请输入你的数字" num
case $num in
    1)
        echo "you choose 1"
        ;;
    2)
        echo "you choose 2"
        ;;
    3)
        echo "you choose 3"
        ;;
    4)
        echo "you choose 4"
        ;;
    *)
        echo "you choose others"
        ;;
esac

匹配字符串:

vol="hhh"
case $vol in 
    "hhh")
        echo "you are hhhhhh"
        ;;
    "xxx")
        echo "you are xxxxxx"
        ;;
    "www")
        echo "you are wwwwww"
        ;;
esac

跳出循环

在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell 使用两个命令来实现该功能:break 和 continuebreak 命令

  1. break 命令允许跳出所有循环(终止执行后面的所有循环)。
  2. continue 命令与 break 命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。
echo "welcome to Amusement park"
echo "please inter a number between 1-4"
while :
do
    read -p "please inter your number: " num
    case $num in
        1|2|3|4)
            echo "you choose 1-4 you are great"
            ;;
        *)
            echo "you choose others you are bad"
            break
            ;;
    esac
done

总结

本篇介绍了shell编程的流程控制:

  1. if-else语句
  2. 循环:
    1. for循环:遍历循环
    2. while循环:符合条件循环
    3. 死循环:一直循环
    4. until循环:一直循环知道符合条件为止
  3. case … esac:模式匹配
  4. 跳出循环:
    1. break:跳出所有循环。
    2. continue:跳出当前循环。
  • 17
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值