Linux下的Shell编程——流程控制(三)

前言:

每门编程都有它独特的语法,比如C语言,Java等编程语言,有相同的地方也有自己独特的地方,但都离不开变量、运算符,条件判断、循环和函数这几个地方的学习,下面就让我们学习一下shell编程里的这些语法是怎样实现的吧

目录

一、if 判断

(1)基本语法

(2)案例实操

 二、case语句

(1)基本语法

(2)案例实操

 三、for循环

 (1)基本语法 1

(2)案例实操

(3)基本语法 2

(4)案例实操

 四、while循环

(1)基本语法

(2)案例实操

 五、read 读取控制台输入

(1)基本语法

(2)案例实操

 六、函数

 (1)系统函数

 (2)自定义函数


一、if 判断

(1)基本语法

        1)单分支

Linux下的Shell编程——流程控制(三)_第1张图片

         2)多分支

Linux下的Shell编程——流程控制(三)_第2张图片

 注意事项:

        ①[ 条件判断式 ],中括号和条件判断式之间必须有空格

        ②if 后要有空格

(2)案例实操

输入一个数字,如果是 1,则输出 haha,如果是 2,则输出 hehe, 如果是其它,则输出wuwu

=Linux下的Shell编程——流程控制(三)_第3张图片

 Linux下的Shell编程——流程控制(三)_第4张图片

 二、case语句

(1)基本语法

Linux下的Shell编程——流程控制(三)_第5张图片

 注意事项:

        (1)case 行尾必须为单词in,每一个模式匹配必须以右括号“)”结束。

        (2)双分号;;表示命令序列结束,相当于 java 中的 break。 

        (3)最后的*)表示默认模式,相当于 java 中的 defaut

(2)案例实操

输入一个数字,如果是 1,则输出 haha,如果是 2,则输出 hehe,如果是其它,输出 wuwu

Linux下的Shell编程——流程控制(三)_第6张图片

 Linux下的Shell编程——流程控制(三)_第7张图片

 三、for循环

 (1)基本语法 1

 for (( 初始值;循环控制条件;变量变化 ))

 do

         程序

done

(2)案例实操

        从 1 加到 10

Linux下的Shell编程——流程控制(三)_第8张图片

Linux下的Shell编程——流程控制(三)_第9张图片

(3)基本语法 2

for 变量 in 值 1 值 2 值 3…

 do

        程序

done

(4)案例实操

(1)打印所有输入参数

Linux下的Shell编程——流程控制(三)_第10张图片

(2)比较$*和$@区别

$*和$@都表示传递给函数或脚本的所有参数,不被双引号“”包含时,都以$1 $2 …$n 的形式输出所有参数。

Linux下的Shell编程——流程控制(三)_第11张图片

 Linux下的Shell编程——流程控制(三)_第12张图片

 四、while循环

(1)基本语法

        while [ 条件判断式 ]

         do

                 程序

         done

(2)案例实操

        从 1 加到 100

Linux下的Shell编程——流程控制(三)_第13张图片

Linux下的Shell编程——流程控制(三)_第14张图片

 五、read 读取控制台输入

(1)基本语法

        read (选项) (参数)

        ①选项:

                -p:指定读取值时的提示符;

                -t:指定读取值时等待的时间(秒)如果-t 不加表示一直等待

        ②参数变量:指定读取值的变量名

(2)案例实操

        提示 7 秒内,读取控制台输入的名称

Linux下的Shell编程——流程控制(三)_第15张图片

Linux下的Shell编程——流程控制(三)_第16张图片

 六、函数

 (1)系统函数

        basename

        (1)基本语法

                 basename [string / pathname] [suffix] (功能描述:basename 命令会删掉所有的前缀包括最后一个(‘/’)字符,然后将字符串显示出来。

                basename 可以理解为取路径里的文件名称

                选项:

                suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的suffix 去掉。

       (2)案例实操

        截取该~/shell/read_test.sh 路径的文件名称。

        Linux下的Shell编程——流程控制(三)_第17张图片

        dirname

        (1)基本语法

                dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名 (非目录的部分),然后返回剩下的路径(目录的部分))

                dirname 可以理解为取文件路径的绝对路径名称

        (2)案例实操

        获取 ~/shell/read_test.sh 文件的路

 (2)自定义函数

        (1)基本语法

                [ function ] funname[()]

                {

                         Action; [return int;]

                }

       (2)经验技巧

                1)必须在调用函数地方之前,先声明函数,shell 脚本是逐行运行。不会像其它语言一 样先编译。

                2)函数返回值,只能通过$?系统变量获得,可以显示加:return 返回,如果不加,将 以最后一条命令运行结果,作为返回值。return 后跟数值 n(0-255) 

        (3)案例实操

        计算两个输入参数的和。

Linux下的Shell编程——流程控制(三)_第18张图片

Linux下的Shell编程——流程控制(三)_第19张图片

你可能感兴趣的:(linux,运维,ubuntu,centos,学习)