1、个新的命令,它是命令,因此 各个输入参数直接用 空格分隔。 一次,命令里面获得参数方法可以通过:$0$n得到。 $0代表函数本身。3、函数返回值,只能通过$? 系统变量获得,直接通过=,获得是空值。其实,我们按照上面一条理解,知道函数是一个命令,在shell获得命令返回值,都需要通过$?获得。二、函数作用域,变量作用范围先我们看一个实例: 我们一起来分析下上面这个实例,可以得到如下结论: 1、定义函数可以与系统命令相同,说明shell搜索命令时候,首先会在当前的shell文件定义好的地方查找,找到直接执行。2、需要获得函数值:通过$?获得3、如果需要传出其它类型函数值,可以在函数调用之前,定义
2、变量(这个就是全局变量)。在函数内部就可以直接修改,然后在执行函数就可以读出修改过的值。4、如果需要定义自己变量,可以在函数中定义:local 变量=值 ,这时变量就是内部变量,它的修改,不会影响函数外部相同变量的值 。这些,是我在工作中,对linux ,shell 函数使用一些经验总结,有没有提到地方,欢迎交流!篇三:shell中的函数Linux命令、xx器、shell编程实例大全-第十九章函数 1. 函数简介 . 1 .return返回上一个命令的退出状态或是给定值 . 1.exit退出整个脚本 . 1.函数中使用break语句中断函数执行 . 1.declare -f 显示定义的函数清单
3、。 . 1.exprot -f 将函数导出给shell . 2.unset -f 从shell内存中删除函数。 . 22. Shell中的调用顺序 . 23. 函数的传参 . 34. 函数的返回值 . 45.将函数载入到内存 . 56. 删除函数 . 77. 函数的作用域 . 78.最简单的递归调用 . 7 1.函数简介 【function】函数名命令表【Return】.return返回上一个命令的退出状态或是给定值 .exit退出整个脚本 rootubuntu-vm:/home/20XX-12-15# cat exit.sh#! /bin/bashfunction testecho func
4、tion calling .!exitcall function starttestcall function end/home/20XX-12-15# ./exit.shcall function startfunction calling .!/home/20XX-12-15#.函数中使用break语句中断函数执行/home/20XX-12-15# declare -fxxmand_not_found_handleif -x /usr/lib/xxmand-not-found ; then/usr/bin/python /usr/lib/xxmand-not-found - $1;retu
5、rn $?elseif -x /usr/share/xxmand-not-found/xxmand-not-found ;/usr/bin/python /usr/share/xxmand-not-found/xxmand-not-found - printf %s: xxmand not foundn 1&2;return 127;fi;fi/home/20XX-12-15# declare -Fdeclare -f xxmand_not_found_handle # -x判断文件存在且可执行 .exprot -f 将函数导出给shell2.Shell中的调用顺序shell在执行一个别名、函
6、数、内部命令、基于磁盘的可执行文件(执行顺序也是如此)/home/20XX-12-15# function mydate echo start . dateend . /home/20XX-12-15# mydatestart .Mon Dec 15 19:16:29 CST 20XXend .mydatedate;3.函数的传参实例1. rootubuntu-vm:/home/20XX-12-15# cat args.sh #! /bin/bash #function:function argsmentfunction argss echo $1 $2 $3 echo $a $b $c re
7、turn a=111b=222c=333argss a b c/home/20XX-12-15# ./args.sha b c111 222 333 实例2. /home/20XX-12-15# cat verif.sh #!function verifif $1 = root & $2 = 123456 ;thensuccess login!failed login!returnverif roota*/home/20XX-12-15# ./verif.sh failed login!*success login! 实例3:/home/20XX-12-15# chmod u+x strcat
8、.sh rootubuntu-vm:/home/20XX-12-15# cat strcat.sh #!function mystrcatecho $1$2input one string:read STR1input other one string:read STR2strcat:mystrcat $STR1 $STR2/home/20XX-12-15# ./strcat.shinput one string:zhanginput other one string:sanstrcat:zhangsan 4.函数的返回值 函数的返回值在没有指定的情况下,保存在$?中。 rootubuntu-
9、vm:/home/20XX-12-15# cat reverif.sh #!if $# -ne 2 ;return 1 -a $2 = return 2if $1 != return 3 -a $2 !return 4return 5verif $1 $2case $? in1)echo 参数个数不对2)echo 验证通过3)echo 用户名不对4)echo 密码不对5)echo 用户名与密码不对esac/home/20XX-12-15# ./reverif.sh 参数个数不对 /home/20XX-12-15# ./reverif.sh root 123456 验证通过/home/20XX-12-15# ./reverif.sh root 12345 密码不对/home/20XX-12-15# ./reverif.sh roo 123456 用户名不对/home/20XX-12-15# ./reverif.sh afjds jlafds 用户名与密码不对 5.将函数载入到内存
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1