Linux基础知识 ·

shell脚本判断语句

if...then

if [条件判断式] ; then

       //当条件判断式成立时,可以执行的命令工作内容。

fi    //将 if 反过来写,结束 if 的意思,代表此判断结束。


其中判断式可以是多个,多个判断式之间还可以用 && 或 || 进行判断。

&&:短路与,两边做与运算判断,前面正确执行,后面才执行。

|| :短路或,两边做或运算判断,前面错误,则执行后面。

如:["$yn"=="Y" -o "$yn=="y"]可以写为["$yn=="Y"]||["$yn=="y"]

怎样书写看个人习惯。

 

示例1:当用户输入Y、y、yes时则输出PASS,当用户输入N、n、no时则输出FAIL。

多重判断

同一数据进行多种不同判断

if [条件判断式] ; then

    //当条件判断式成立时,可以执行的命令工作内容。

else

   //当条件判断式不成立时,可以执行的命令工作内容。

fi    //将 if 反过来写,结束 if 的意思,代表此判断结束。


if [条件判断式一] ; then

    //当条件判断式一成立时,可以执行的命令工作内容。

elif [条件判断式二] ; then

    //当条件判断式二成立时,可以执行的命令工作内容。

else

   //当条件判断式一与二均不成立时,可以执行的命令工作内容。

fi    //将 if 反过来写,结束 if 的意思,代表此判断结束。


示例2:将示例1改写一遍。

示例3:1.判断 $1 是否为 hello ,若是则显示“hello world!”

2.如果没有加任何参数,就提醒用户必须要使用的参数。

3.如果加入参数的参数不是hello,就提醒用户仅能使用hello。

case...esac

ease $变量名称 in    //ease 与 in 之间填变量。

    "第一个变量内容")   //每个变量内容用双引号引起来,后面用右半边小括号结尾“)”

      程序段         //当变量内容符合时执行的内容。

;;                     //每个类型结束后需要两个分号来处理。

    "第二个变量内容")

      程序段

;;

*)            //最后一个变量用“ * ”来表示其他值,表示不属于上述变量内容的值。

      不属于第一和第二个变量内容的其他程序执行段

;;

esac     //case反过来写,做判断式结尾。


示例4:用此方法将示例3重写。

示例5:1.在用户输入 1 时,显示Your choice is ONE。

            2.在用户输入2 时,显示Your choice is TOW。

            3.在用户输入其他字符时,则提示只能输入1或2。

function

函数(function)功能:在计算机中函数是指一段在一起的、可以做某一件事儿的程序。

利用这个特性,我们可以将一段需要重复执行的代码定义为一个函数,然后再需要的之后直接去调用这个函数,而不用去重复的写某段代码,我们也就可以将很多功能利用函数将其做成模块化的。

function 函数名称 () {

             程序段

}

因为shell脚本的执行方式是由上而下、从左到右,所以我们需要在shell 脚本中将function定义写在程序的最前面,否则可能会导致部分代码无法成功找到function。


示例6:将示例5利用function来构建。

function 也是有内置变量的,其内置变量与shell script很类似,函数名称是$0,而后续接的变量也是以$1、$2、$3......来表示的,和shell script的内置变量一样,但是function 调用的可是其自己的变量,千万不要弄混了哦。

通过上面的例子,就可以很方便的理解了吧,function的内置变量虽然和shell script的内置变量类似,但是它们可是各调用各的变量哦。

不定式循环

当判断式成立时,则循环至判断式不成立。

while [判断式]

do

    程序段落   

done


当判断式不成立时,则循环至判断式成立。

until [判断式]

do

   程序段落

done

示例7:当用户输入YES或yes时,才终止程序,否则一直告知用户输入字符。

上述例子中,判断式为输入非yes或YES时,就开始不断循环,那么用until该怎样呢?


数值运算方式循环

for ((初始值;限制值;执行步长))

do

    程序段落

done

初始值:某个变量在循环中的初始值。

限制值:当变量的值在此限制范围内,就继续循环。

执行步进:没做一次循环时变量的变化范围。若每次都是+1则可写为“i++”方式。

示例8:编写脚本测试本机与172.16.0.0~172.16.255.254之间网络是否连接,并将连接信息写入文件。

固定式循环

不定式循环就是要循环到“符合某个状态”,其循环次数是不固定的。

而固定式循环就是确定了状态,从而指定循环次数。

for 变量名 in 第一次循环变量内容 第二次循环变量内容 ......

do

      程序段落

done

示例9:

shell script的追踪与调试

脚本写完了,可不可以不用执行,就能知道脚本有没有问题呢?

我们可以直接以bash的相关参数来进行判断。

sh [-nvx] scripts.sh

-n:不执行脚本,仅查询语法问题。

-v:在执行脚本前,现将脚本内容输出到屏幕。

-x:将使用到的脚本内容显示到屏幕上,可以查看脚本执行到哪出现问题。

参与评论

  • Lurker

    博客今天刚刚搭好,来来来,给个友链 :lol: :lol: :lol: http://www.lurker.top/

    2年前 (2016-11-13)
    回复
    回复Lurker
  • ZhangSir

    :shock: 已上 :mrgreen: 互加友链

    2年前 (2016-11-14)
    回复
    回复ZhangSir