[SHELL脚本练习]Shell编程关于函数要注意的几点

8,461次阅读
没有评论

一、无论是在函数内,还是在函数外,$0的值都是该脚本本身。

vim test.sh
#!/bin/bash
echo $0
function testFunc(){
    echo "In function:"
    echo "\$0=$0"
    echo "\$1=$1"
}
testFunc 'test test'

[SHELL脚本练习]Shell编程关于函数要注意的几点

二、函数内定义的变量

函数内定义的变量(如果不是必须要修改全局变量的话)尽量使用local关键字定义成局部变量,以免覆盖全局变量值

#!/bin/bash
TESTDATA="Hello world."
TESTDATA1="Hello shell."

function localFunc(){
    TESTDATA="Hello python."
    local TESTDATA1="Hello PHP." (局部变量)
    echo "In function:"
    echo "\$TESTDATA=$TESTDATA"
    echo "\$TESTDATA1=$TESTDATA1"
}

#call function
localFunc

echo "Out of function:"
echo "\$TESTDATA=$TESTDATA"
echo "\$TESTDATA1=$TESTDATA1"

[SHELL脚本练习]Shell编程关于函数要注意的几点

三、函数内使用return 关键字返回一个0-255的值

函数内使用return 关键字返回一个0-255的值,表示该函数退出状态码(即该函数是否执行成功),0表示执行成功,非0表示失败。在日常工作中,可以根据条件使函数返回是否执行成功,供其他程序做判断使用。若需要函数返回一个结果值,并存储到一个变量中,要使用echo语句。

#!/bin/bash
 
function returnFunc(){
    echo "value"
    return 247
}
 
DATA=$(returnFunc)
echo "\$?=$?"
echo "\$DATA=$DATA"

[SHELL脚本练习]Shell编程关于函数要注意的几点

四、函数调用

如果有多个shell脚本,一个脚本需要调用另外一个脚本里的函数,需要执行以下命令,将指定的脚本文件载入:

. ./func.sh

或者

source ./func.sh

上边的操作类似于其他语言的include操作。

[root@dc ~]# cat func.sh 
#!/bin/bash
function func1(){
    echo "This is func1"
}
 
function func2(){
    echo "This is func2"
}
 
function func3(){
    echo "This is func3"
}
[root@dc ~]# cat call.sh 
#!/bin/bash
#source ./func.sh
. ./func.sh
func1
func2
func3

[SHELL脚本练习]Shell编程关于函数要注意的几点

Honest1y
版权声明:本站原创文章,由Honest1y于2017年11月17日发表,共计2712字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)