shell接收函数返回值Word文档格式.docx
《shell接收函数返回值Word文档格式.docx》由会员分享,可在线阅读,更多相关《shell接收函数返回值Word文档格式.docx(5页珍藏版)》请在冰豆网上搜索。
个新的命令,它是命令,因此各个输入参数直接用空格分隔。
一次,命令里面获得参数方法可以通过:
$0…$n得到。
$0代表函数本身。
3、函数返回值,只能通过$?
系统变量获得,直接通过=,获得是空值。
其实,我们按照上面一条理解,知道函数是一个命令,在shell获得命令返回值,都需要通过$?
获得。
二、函数作用域,变量作用范围
先我们看一个实例:
我们一起来分析下上面这个实例,可以得到如下结论:
1、定义函数可以与系统命令相同,说明shell搜索命令时候,首先会在当前的shell文件定义好的地方查找,找到直接执行。
2、需要获得函数值:
通过$?
获得
3、如果需要传出其它类型函数值,可以在函数调用之前,定义变量(这个就是全局变量)。
在函数内部就可以直接修改,然后在执行函数就可以读出修改过的值。
4、如果需要定义自己变量,可以在函数中定义:
local变量=值,这时变量就是内部变量,它的修改,不会影响函数外部相同变量的值。
这些,是我在工作中,对linux,shell函数使用一些经验总结,有没有提到地方,欢迎交流!
篇三:
shell中的函数
Linux命令、xx器、shell编程实例大全----第十九章函数
1.函数简介......................................................................................................................................1
.return返回上一个命令的退出状态或是给定值.............................................................1
.exit退出整个脚本............................................................................................................1
.函数中使用break语句中断函数执行............................................................................1
.declare-f显示定义的函数清单。
................................................................................1
.exprot-f将函数导出给shell.........................................................................................2
.unset-f从shell内存中删除函数。
................................................................................2
2.Shell中的调用顺序.....................................................................................................................2
3.函数的传参..................................................................................................................................3
4.函数的返回值..............................................................................................................................4
5.将函数载入到内存........................................................................................................................5
6.删除函数......................................................................................................................................7
7.函数的作用域..............................................................................................................................7
8.最简单的递归调用........................................................................................................................7
1.函数简介
【function】函数名
{
命令表
【Return】
}
.return返回上一个命令的退出状态或是给定值
.exit退出整个脚本
root@ubuntu-vm:
/home/20XX-12-15#catexit.sh
#!
/bin/bash
functiontest
echo"
functioncalling...!
"
exit
callfunctionstart"
test
callfunctionend"
/home/20XX-12-15#./exit.sh
callfunctionstart
functioncalling...!
/home/20XX-12-15#
.函数中使用break语句中断函数执行
/home/20XX-12-15#declare-f
xxmand_not_found_handle
if[-x/usr/lib/xxmand-not-found];
then
/usr/bin/python/usr/lib/xxmand-not-found--"
$1"
;
return$?
else
if[-x/usr/share/xxmand-not-found/xxmand-not-found];
/usr/bin/python/usr/share/xxmand-not-found/xxmand-not-found--"
printf"
%s:
xxmandnotfound\n"
"
1>
&
2;
return127;
fi;
fi
/home/20XX-12-15#declare-F
declare-fxxmand_not_found_handle
#-x判断文件存在且可执行
.exprot-f将函数导出给shell
2.Shell中的调用顺序
shell在执行一个别名、函数、内部命令、基于磁盘的可执行文件(执行顺序也是如此)
/home/20XX-12-15#functionmydate
>
{
echo"
start..."
date
end..."
}
/home/20XX-12-15#mydate
start...
MonDec1519:
16:
29CST20XX
end...
mydate
date;
3.函数的传参
实例1.
root@ubuntu-vm:
/home/20XX-12-15#catargs.sh#!
/bin/bash
#function:
functionargsment
functionargss
echo$1$2$3
echo$a$b$c
return
a=111
b=222
c=333
argssabc
/home/20XX-12-15#./args.sh
abc
111222333
实例2.
/home/20XX-12-15#catverif.sh#!
functionverif
if[$1="
root"
]&
[$2="
123456"
];
then
successlogin!
failedlogin!
return
verif"
roota"
***************"
/home/20XX-12-15#./verif.sh
failedlogin!
***************
successlogin!
实例3:
/home/20XX-12-15#chmodu+xstrcat.shroot@ubuntu-vm:
/home/20XX-12-15#catstrcat.sh#!
functionmystrcat
echo$1$2
inputonestring:
readSTR1
inputotheronestring:
readSTR2
strcat:
mystrcat$STR1$STR2
/home/20XX-12-15#./strcat.sh
inputonestring:
zhang
inputotheronestring:
san
strcat:
zhangsan
4.函数的返回值
函数的返回值在没有指定的情况下,保存在$?
中。
root@ubuntu-vm:
/home/20XX-12-15#catreverif.sh#!
if[$#-ne2];
return1
-a$2="
return2
if[$1!
="
return3
-a$2!
return4
return5
verif$1$2
case$?
in
1)echo"
参数个数不对"
2)echo"
验证通过"
3)echo"
用户名不对"
4)echo"
密码不对"
5)echo"
用户名与密码不对"
esac
/home/20XX-12-15#./reverif.sh参数个数不对
/home/20XX-12-15#./reverif.shroot123456验证通过
/home/20XX-12-15#./reverif.shroot12345密码不对
/home/20XX-12-15#./reverif.shroo123456用户名不对
/home/20XX-12-15#./reverif.shafjdsjlafds用户名与密码不对
5.将函数载入到内存