Shell编程学习之函数的应用

  • Shell编程中的函数:
  • 伪代码表示:
function 函数名(){

       函数体

}
  • 注意事项:

  • 1.函数无参数;

  • 2.函数无返回值类型;

  • 3.function可以不写;

  • 4.函数不被调用,就不会执行;

  • 5.函数名不能使用关键字名称,由数字、字母或下划线组成,且数字不能作为函数名的开头;

  • 函数的调用:

  • 1.无参数时,直接使用函数名即可;

  • 2.有参数时,函数名后跟着参数,多个参数用空格分隔;

  • 函数内部使用的参数:

  • 需要利用位置变量来使用参数;例如:

  • 1.$0:脚本名

  • 2.$1~$9:调用函数时,给函数传递的第1至第9个参数

  • 十位数及其上:需要添加花括号{ },比如:${88}

  • 示例代码:

#!/bin/bash

function print_string(){
    for((i=0;i<6;i++))
    do

        echo "WELCOME TO BEIJING $i"
    done

}

print_string

echo "---------------------------------"

function my_mul(){
    echo $0
    echo $1
    echo $2
    expr $1 \* $2
}

my_mul 12 12
  • 运行结果:
WELCOME TO BEIJING 0
WELCOME TO BEIJING 1
WELCOME TO BEIJING 2
WELCOME TO BEIJING 3
WELCOME TO BEIJING 4
WELCOME TO BEIJING 5
---------------------------------
g5.sh
12
12
144
  • 虚拟机终端传递函数参数:
  • 1.若使用执行脚本的命令行参数,调用函数时,传递参数,如示例代码1所述;
  • 2.如使用命令行的所有参数,如示例代码2所述,可以采用以下4种方式
  • i.$@ :根据单词列表的个数,在终端写多少参数进行传递;
  • ii.$*:同上;
  • iii."$@":同上;
  • iv."$*":使用命令行的所有参数,在函数中,使用$1即可;
  • 示例代码1:
#!/bin/bash

function my_string(){

    echo "HI zhengzhou $1"
    echo "HI zhengzhou $2"
    echo "HI zhengzhou $3"
    echo "HI zhengzhou $4"
    echo "HI zhengzhou $5"
    echo "HI zhengzhou $6"
    echo "HI zhengzhou $7"
    echo "HI zhengzhou $8"
    echo "HI zhengzhou $9"
    echo "HI zhengzhou ${10}"
}
my_string $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} 
my_string ${10} $9 $8 $7 $6 $5 $4 $3 $2 $1 
  • 运行结果1:
#linux@ubuntu:~$ bash g6.sh 1 2 3 4 5 6 7 8 9 10 10 9 8 7 6 5 4 3 2 1
HI zhengzhou 1
HI zhengzhou 2
HI zhengzhou 3
HI zhengzhou 4
HI zhengzhou 5
HI zhengzhou 6
HI zhengzhou 7
HI zhengzhou 8
HI zhengzhou 9
HI zhengzhou 10
HI zhengzhou 10
HI zhengzhou 9
HI zhengzhou 8
HI zhengzhou 7
HI zhengzhou 6
HI zhengzhou 5
HI zhengzhou 4
HI zhengzhou 3
HI zhengzhou 2
HI zhengzhou 1
  • 示例代码2:
#!/bin/bash

function my_para(){

    for i in $1 $2 $3 $4 $5
    do
       echo $i
    done
}

echo "******************************"
my_para $@
echo "******************************"
my_para $*
echo "******************************"
my_para "$@"
echo "******************************"

function my_para1(){

    for i in $1
    do
       echo $i
    done
}
my_para "$*"
  • 运行结果2:
******************************
11
22
33
44
55
******************************
11
22
33
44
55
******************************
11
22
33
44
55
******************************
11
22
33
44
55
  • 函数的返回值:
  • 1.Shell编程中所有的变量默认都是全局的,函数内部的变量在函数调用完成后,是可以直接访问的,除了local关键字修饰的函数内部的变量,其他的变量都可以作为函数运行的结果的方式;
  • 2.可以使用return关键字返回;
  • 3.可以使用命令置换符获取函数的返回值;
  • 示例代码:
#!/bin/bash

function my_mul(){

   KEY1=$(( $1 * $2 ))


}

my_mul 12 12
echo $KEY1

echo "******************************"
function my_sub(){

   echo $(( $1 - $2 ))


}
function my_mod(){

   echo $(( $1 % $2 ))


}

KEY2=$(my_sub 199 100)
echo $KEY2
echo "******************************"
KEY3=`my_mod 100 3`
echo $KEY3
  • 运行结果:
144
******************************
99
******************************
1
  • 一维数组传递函数参数:
  • 实例要求:
  • 编写脚本,调用自定义函数,传递自定义数组的各个成员的值,并求和;
  • 测试代码:
#!/bin/bash

SUM=0
function my_Sum(){

   for i in $1 $2 $3
   do
      SUM=$(($SUM+$i))
   done
   echo $SUM


}

A1=([0]="11" [1]="22" [2]="33")
KEY=$(my_Sum "${A1[@]}")
echo $KEY
  • 运行结果:
66

你可能感兴趣的:(Shell编程学习系列,shell,脚本,linux,嵌入式硬件,数据库)