加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

创建函数

发布时间:2020-12-15 09:24:38 所属栏目:安全 来源:网络整理
导读:创建函数 function name { commands } name() { commands } 函数返回值 1 . 默认的退出状态码 函数运行结束时会返回一个退出状态码(函数中最后一条命令返回的退出状态码)。 $? 用该变量查看函数的退出状态码。 2 . 使用return命令 return命令允许指定一个

创建函数

function name {
commands
}

name() {
commands
}

函数返回值

1 . 默认的退出状态码

函数运行结束时会返回一个退出状态码(函数中最后一条命令返回的退出状态码)。
$? 用该变量查看函数的退出状态码。

2 . 使用return命令

return命令允许指定一个整数值来定义函数的退出状态码。
注意:退出状态吗必须是0~255,如果return值 > 256,则会产生一个错误值。

3 . 使用函数输出

func abc {
    read -p "Enter a value: " value
    echo "the input value is :"
    echo $value
 }

result=$(abc)
echo "the new value is $result"

output:

$: ./test.sh

Enter a value: 100
the input value is :
100

在函数中使用变量

1 . 向函数传递参数

#!/bin/bash
function addem {
    if [ $# -eq 0 ] || [ $# -gt 2 ]
    then
        echo -1
    elif [ $# -eq 1 ]
    then
        echo $[ $1 + $1 ]
    else
        echo $[ $1 + $2 ]
    fi
}

echo -n "Add 10 and 15: "
value=$(addem 10 15)
echo $value

echo -n "Let's try adding just one number: "
value=$(addem 10)
echo $value

echo -n "Now trying adding no numbers: "
value=$(addem)
echo $value

echo -n "Finally,try adding three numbers: "
value=$(addem 10 15 20)
echo $value

由于函数使用特殊参数环境变量作为自己的参数值,因此它无法直接获取脚本在命令行中的参数值。

2 . 在函数中处理变量
一般情况下,如果在脚本的主体部分定义了一个全局变量,那么可以在函数内访问它;如果在函数内定义了一个全局变量,可以在脚本主体部分访问它。

定义局部变量:

local temp
local temp=$[ $value + 5 ]

local关键字保证了变量只局限在该函数中。

数组变量和函数

1 . 向函数传递数组参数

#!/bin/bash
function testit {
    local new_array
    new_array=`echo $@`
    echo "the new array value is ${new_array[*]}";
}

myarray=(1 2 3 4 5 6)
echo "the original array is ${myarray[*]}"
testit ${myarray[*]}


function addarray {
    local sum=0
    local newarray
    newarray=$(echo "$@")
    for value in ${newarray[*]}
    do
        sum=$[ $sum + $value ]
    done
    echo $sum
}

myarray=(1 2 3 4 5)
echo "the original array is: ${myarray[*]}"
arg1=$(echo ${myarray[*]})
result=$(addarray $arg1)
echo "the result is $result"

output:

the original array is 1 2 3 4 5 6
the new array value is : 1 2 3 4 5 6
the original array is: 1 2 3 4 5
the result is 15

2 . 从函数返回数组
从函数里向shell脚本传回数组变量的方法: 函数用echo语句来按正确顺序输出单个数组值,然后脚本再将他们重新放进一个新的数组变量中。

创建库

shell中怎么使用库文件?

a). 首先创建一个库文件
b). 在脚本文件中引用库文件,使用库文件中的函数
关键在于:怎么引用库文件?

使用函数库的关键在于 source命令:该命令会在当前shell上下文中执行命令,而不是创建一个新shell。

使用 source命令 来在shell脚本中运行库文件脚本,这样就可以使用库中的函数了。

. ./funcLib    #source命令的别名:点操作符
. /home/rich/libraries/myfuncs

如何直接在命令行上直接运行函数

方法一:直接在命令行上创建函数, 然后在命令行上调用该函数即可。

缺点:退出shell时,函数就消失了。

方法二: 在 .bashrc文件中定义函数 将函数直接定义在这个文件中,这个文件在每次启动一个新的shell的时候,都会由shell重新载入。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读