今天上午一个朋友突然QQ问到,shell编程中的函数为什么return只能是整数,怎么样才能将函数的执行结果返回并保存至某个变量中。其实这个问题很好解决---只需要认真了解下shell函数即可。
shell编程中关于函数需要知道的几点
一、无论是在函数内,还是在函数外,$0的值都是该脚本本身。
[root@target ~]# cat test.sh #!/bin/bash echo $0 function testFunc(){ echo "In function:" echo "\$0=$0" echo "\$1=$1" } testFunc ‘test test‘ [root@target ~]# bash test.sh test.sh In function: $0=test.sh $1=test test
二、函数内定义的变量(如果不是必须要修改全局变量的话)尽量使用local关键字定义成局部变量,以免覆盖全局变量值
[root@target ~]# cat local.sh #!/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" [root@target ~]# bash local.sh In function: $TESTDATA=Hello python. $TESTDATA1=Hello PHP. Out of function: $TESTDATA=Hello python. $TESTDATA1=Hello shell.
三、函数内使用return 关键字返回一个0-255的值,表示该函数退出状态码(即该函数是否执行成功),0表示执行成功,非0表示失败。在日常工作中,可以根据条件使函数返回是否执行成功,供其他程序做判断使用。若需要函数返回一个结果值,并存储到一个变量中,要使用echo语句。
[root@target ~]# cat return.sh #!/bin/bash function returnFunc(){ echo "value" return 247 } DATA=$(returnFunc) echo "\$?=$?" echo "\$DATA=$DATA" [root@target ~]# bash return.sh $?=247 $DATA=value
四、如果有多个shell脚本,一个脚本需要调用另外一个脚本里的函数,需要执行以下命令,将指定的脚本文件载入:
. ./func.sh
或者
source ./func.sh
上边的操作类似于其他语言的include操作。
[root@target ~]# cat func.sh #!/bin/bash function func1(){ echo "This is func1" } function func2(){ echo "This is func2" } function func3(){ echo "This is func3" } [root@target ~]# cat call.sh #!/bin/bash #source ./func.sh . ./func.sh func1 func2 func3 [root@target ~]# bash call.sh This is func1 This is func2 This is func3
本文出自 “diannaowa” 博客,请务必保留此出处http://diannaowa.blog.51cto.com/3219919/1702849
原文地址:http://diannaowa.blog.51cto.com/3219919/1702849