分享

小萌新—> Linux高手系列:包管理【二】

 TestOps云层 2021-06-22

上期回顾:小萌新—> Linux高手系列:包管理

为一个有追求的测试,如何从一个运维小萌新成长为一个Linux 高手?请持续关注我们的

《小萌新 -> Linux高手系列文章》。

今天这篇文章将给大家介绍 Shell 脚本中的流程控制。

Shell 脚本介绍

Shell 脚本是 由一些按照一定格式组合起来的 Shell 命令组成。不需要编译就可以直接执行,它是边解释边执行的。

Linux 系统提供多种不同的Shell以供选择。常用的有 Bourne Shell(简称sh)、C-Shelll(简称csh)、Korn Shell(简称ksh)和Bourne Again Shell (简称bash)。

通常在Shell 脚本中,第一行都有类似这样的语句:

#!/bin/bash         

这句话的意思是指定一款在/bin/下名字叫 bash 的 Shell 解释器,来解释脚本中的命令。如果系统用的是其他的解释器,就要将/bin/bash 改成相应的名字。     

示例:hello.sh    

#!/bin/bash

echo "Hello World!“

注:

如果没有执行权限的需要添加执行权限,chmod +x hello.sh ;

除了第一行,后面的'#'号就是注释符,'#'号后面的就是注释内容,会被解释器忽略。

在使用 Shell 脚本中完成一系列命令操作时,总是离不开流程控制语句,以便我们对于不同情况进行处理。

下面正式开始介绍 Shell 脚本中的流程控制。

if 语句

在 Shell 脚本中经常需要通过判断一定条件后,决定执行什么样的命令,我们通常使用 if 语句达到此目的。

if 语句语法:

if [ condition ]

then

    command

fi

注:

[]两边需要有空格;

最后需要以 fi 结束 if 语句

if语句中的数值判断:

使用 test 命令进行判断:

示例代码:

# 比较两个数值

num=15

if [ $num -gt 10 ]   #  []两边要有空格

then

    echo "more"

elif [ $num -eq 10 ]

then

    echo "equal"

else

    echo "less"

fi

# 比较两个字符串

str1="testops"

str2="TestOps"

if test $str1 = $str2

then

    echo '两个字符串相等!'

else

    echo '两个字符串不相等!'

fi

# 判断文件是否存在

cd /bin

if test -e ./bash

then

    # do something

else

    # create or copy a file

fi

case 语句

Shell 脚本中 case 语句为多选择语句。可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

case 语句语法:

case 判断条件 in

值1)

    command

    ;;

值2)

    command

    ;;

*)

command

esac

示例:

echo '输入 1 到 4 之间的数字:'

echo '你输入的数字为:'

read aNum

case $aNum in

    1)  echo '你选择了 1'

    ;;

    2)  echo '你选择了 2'

    ;;

    3)  echo '你选择了 3'

    ;;

    4)  echo '你选择了 4'

    ;;

    *)  echo '你没有输入 1 到 4 之间的数字'

    ;;

esac

for 循环

for 循环是比较常用的循环结构,shell 中的 for 循环与 java 中类似,不同的是这里用 do done 代替了 java 中的大括号 { }。

示例:

# 直接使用指定数据进行循环

for loop in 1 2 3 4 5

do

    echo "The value is: $loop"

done

# 类Java语法

for((i=1;$i<=20;i++))

do

               command

done

# 使用某个可循环的变量进行循环

arr=(1 2 3 a b)

for a in ${arr[*]}

do

    echo $a

done

# 使用 seq 命令来决定循环次数

num=10

for loop in `seq 1 $num`

do

    echo "The value is: $loop"

done

while 循环

Shell 脚本中的 while 循环与 java中类似,当判断条件 condition 结果为 true 时,执行循环体中的 command 操作语句;不同的是这里用 do done 代替了java 中的大括号 { }。

示例:

# 使用条件判断来决定循环终止

num=1

while(( $num<=5 ))

do

    echo $num

    let "num++"

done

# 无限循环

while true

do

    # do something

done

结语

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多