SHELL脚本

shll作为脚本语言,也有自己的函数。但是他有许多与其他语言不同的特点

定义

在这里,定义了一个函数,有2个参数,第一个:数组,第二个:单个值。
这个函数的作用是判断第二个参数的值是否在第一个参数(数组)里面。

#!/bin/sh 
# 定义函数
# _FUN
function contain() {
        array=$1
        value=$2
        for _arr_val in ${array[@]}
        do
                ta_array=`echo ${_arr_val} | cut -d ',' -f 1`
                tb_value=`echo ${value} | cut -d ',' -f 1`

                if [ "${ta_array}" = "${tb_value}" ];then
                        g_contain_rs="1"
                else
                        g_contain_rs="0"
                fi

        done
}

调用

ARR_RS_B=("AAA","BBB","CCC")
SYSJOB_NAME="AAA"
contain ${ARR_RS_B} ${SYSJOB_NAME}

需要注意的是:函数必须在被调用之前就已经被定义好。

获取函数返回值

目前在shell脚本中,获取函数的返回值有2种方式

第一种使用 $? 来获取上一个函数的返回值

# 函数的返回值一般使用1或者0
function test_fun() {
    if 条件;then
        return 1
    else
        return 0
    fi
}

test_fun
echo "$?"

这种方法简洁易用,但是有一个致命的问题:在循环调用方法的时候,$?只能获取到第一次被调用的函数的返回值。

如何避免这种问题?可以使用全局变量。如同在上文【定义】中,使用全局变量g_contain_rs来获取最新的函数调用返回值。

g_contain_rs=""

function test_fun() {
    if 条件;then
        g_contain_rs=1
    else
        g_contain_rs=0
    fi
}

echo "$g_contain_rs"
本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院