创建函数

来源:互联网 发布:java tomcat 编辑:程序博客网 时间:2024/05/21 10:44

创建函数

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.shEnter a value: 100the input value is :100

在函数中使用变量

1 . 向函数传递参数

#!/bin/bashfunction 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 $valueecho -n "Let's try adding just one number: "value=$(addem 10)echo $valueecho -n "Now trying adding no numbers: "value=$(addem)echo $valueecho -n "Finally, try adding three numbers: "value=$(addem 10 15 20)echo $value 

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

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

定义局部变量:

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

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

数组变量和函数

1 . 向函数传递数组参数

#!/bin/bashfunction 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 6the new array value is : 1 2 3 4 5 6the original array is: 1 2 3 4 5the result is 15

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

创建库

shell中怎么使用库文件?

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

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

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

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

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

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

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

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

原创粉丝点击