Shell脚本(二)第十四天

shell中的判断语句

if  语句

语法格式:

if  [判断条件]

then

     输出结果1

     输出结果2

     …

fi

判断符号[]

使用判断符号[]来进行数据的判断,只是中括号多用在条件判断语句if…then…fi中

判断符号[]中每个组件中间都要用空格来分隔,比如:

name="qweqwe"

 [ "$name" == "qweqwe" ]

注意:

1、第一个方括号的左右两边分别有一个空格,第二个方括号左右两边也分别有一个空格,符号“==”与两边的组件之间也各有一个空格。

2、中括号[]内的变量最好用双引号来设置。

if else-if else 语法格式:
if [条件1]

then

   输出结果1

elif [条件2]

then

    输出结果2

else

   其他输出结果

fi

条件判断(case…esac语句)

格式为:

case $变量名 in

   "第一个变量内容")

         程序段

           ;;

    "第二个变量内容")

         程序段

            ;;

*)

    不包含第一个变量内容与第二个变量内容的其他程序执行段

   ;;

esac

(1)case语句最后必须以esac为结尾。

(2)每一个变量内容的程序段最后都需要两个分号来表示该程序段的结束。

(3)最后的"*"作用表示默认的意思。

循环(while…do…done)

循环while…di…done的格式

   当判断条件成立时,就进行条件循环,直到判断的条件不成立为止。

while((判断的条件))

do

    程序段

done

跳出循环

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

break命令

break命令允许跳出所有循环(终止执行后面所有循环)。

continue:跳转到循环开始的地方(循环判定条件)

死循环:指循环判定条件永远成立。

例:脚本进入死循环直至用户输入数字大于5.

要跳出这个循环,返回到shell提示符下,需要使用break命令。

continue

       continue命令与break命令类似,他不会跳出所有循环,仅仅跳出当前循环。

while:

do

   echo  "输入1到5之之间的数字:"

   read aNum

   case $aNum in

       1) echo "A"

           ;;

       *) echo "stop!"

            contine

           echo "BBB!"

        ;;

    esac

done

循环(for…do…done)

基本结构1:

for((初始值;条件;运算语句))

do

    程序段

done

案例:使用for循环打印出1到10之间的数

#!/bin/sh

for((i=1;i<10;i++));do

     echo $!;

done;

shell函数

  bash 也跟其他编程语言一样也支持函数,一般在编写大型脚本中需要用到,它可以将shell脚本程序划分成一个个功能相对独立的代码块,使代码的模块化更好,结构更清晰,并可以有效减少程序的代码量。

  但是bash作为一种解释性语言,bash在编程能力方面提供的支持并不像其他编译性语言那样完善,执行效率也会低很多。

shell函数的定义、执行与传参

格式1:

function 函数名() {

      函数体

}

注意:函数体指函数功能

格式2:

    函数名() {

           函数体

}

          可以带function 函数名()定义,也可以直接函数名()定义,不带任何参数。

执行:

函数名

        直接使用函数名称即可调用某个函数。

传递函数

#!/bin/bash

aa="this is aa"

bb="this is bb"

function name() {            #定义函数name

      local cc="this is cc"    #定义局部变量$cc

      local dd="this is dd"    #定义局部变量$dd

     echo $aa,$bb          #访问参数1和参数2

     echo $cc             #打印局部变量

     return 0    #shell函数返回值是整形。

}

echo $dd               #这里将会打印不生效,因为dd是局部变量。

name              #使用函数name

变量的分类:

全局变量:在脚本中,函数外

局部变量:指在函数中声明的变量

函数返回值

funReturn(){

    echo "这个函数会输入的两个数字进行相加运算"

    echo "输入第一个数字:"

    read aNum

    echo "输入第二个数字:"

    read anotherNum

    echo "两个数字分别为 $aNum 和 $anotherNum !"

    return  $((aNum+$anotherNum))

}

funReturn

echo "输入的两数字之和为$? !"

函数返回值在调用该函数后通过 $? 来获得。

函数参数

在shell中,调用函数是可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,

例如,$1表示第一个参数,$2表示第二个参数…

但是,当n>=10时,需要使用$(n)来获取参数。

fun(){

   echo "第一个参数为 $1 !"

   echo "第二个参数为 $2 !"

   echo "第十个参数为 $10 !"

   echo "参数总数有 $# 个!"

   echo "作为一个字符串输出所有参数 $* !"

}

fun 1 2 3 4 5 6 7 8 9 67 89

递归函数

bash也支持递归函数(能够调用自身的函数)

#!/bin/bash

function name() {

           echo "aaa"

           name

}

name

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值