← 返回首页
Linux高级程序设计(十四)
发表时间:2021-11-07 11:11:36
shell 函数

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。

1.函数定义 可以带 function 关键字使用 function fun_name() 来定义,也可以直接给出函数名 fun_name() 定义。不能带任何参数,函数名必须唯一。函数必须先定义,再调用。

#定义方式一
function_name() {
    statements
    [return value]
}

#定义方式二
function function_name {
    statements
    [return value]
}

实例:

#!/bin/bash
#函数定义
function sayHello(){
   echo "hello,world!"
}
#函数调用
sayHello

2.函数传参

使用$1,$2,...$n 获取外部传参。

实例:

#!/bin/bash
function add(){
   a=$1
   b=$2
   sum=`expr $a + $b`
   echo "sum=$sum"
}

#函数调用
add 12 7

测试运行:

[root@iz2zefozq9h39txdb8s7npz shelldemo]# ./test.sh
sum=19

3.函数返回值 通常使用$?获取函数的返回值。 实例:

#!/bin/bash
function add(){
   a=$1
   b=$2
   sum=`expr $a + $b`
   return $sum
}
add 12 7
echo "sum=$?"

但是这种方式获取的返回值不能超过255,否则会出错。 实例:

#!/bin/bash
function add(){
   a=$1
   b=$2
   sum=`expr $a + $b`
   return $sum
}
add 102 700
echo "sum=$?"

测试运行:

[root@iz2zefozq9h39txdb8s7npz shelldemo]# ./test.sh
sum=34

在shell中除了()中定义的变量,只要不做任何修饰,都可以理解为是一个全局变量,因此在函数体外可以直接获取返回值。

实例:

#!/bin/bash
function add(){
   a=$1
   b=$2
   sum=`expr $a + $b`
   return $sum
}
add 102 700
echo "sum=$sum"

测试运行:

[root@iz2zefozq9h39txdb8s7npz shelldemo]# ./test.sh
sum=802