首页 > 代码库 > shell学习总结之自定义函数

shell学习总结之自定义函数

 

shell学习总结之自定义函数

 

Myfun (){ echo patams1 is $1  echo -n "now i is $i " ! [ "$i" ] && exit ; echo jj  return 1}myf=$(Myfun);echo myf Myfun 12unset  MyfunMyfunecho the end !$myf

 

 

 

别人的

#! bin/bash# -------------------------------------------------------------------------------# 文件名:  Shell自定义函数总结.sh# 版 本:   1.0# 创建日期: 2014/02/12# 描 述:   shell中可以用户定义函数,然后在脚本中可以随便调用,下面是我总结的自定义函数的一些特性# 作 者:   毕小朋# 邮 箱:   wirelessqa.me@gmail.com# 博 客:   http://blog.csdn.net/wirelessqa# -------------------------------------------------------------------------------function get_return_str(){     echo "return \"$1\""    return $1}function get_return_int(){    echo "return $(($1+$2))"    return $(($1+$2))}function get_no_return(){    echo "echo $(($1*2))"}#声明全局变量global_var="website: http://blog.csdn.net/wirelessqa"function get_global_var(){    echo "函数内更改全局变量:global_var=\"name: bixiaopeng\""    global_var="name: bixiaopeng"}function get_local_var(){    echo "函数内声明局部变量:local local_var=\"weibo@wirelessqa\""    local local_var="weibo@wirelessqa"}echo "自定义函数需知:"echo "一.因为shell脚本是逐行运行。不会像其它语言一样先预编译,所以必须在调用函数地方之前,声明函数"echo "二.各个输入参数直接用空格分隔,命令里面获得参数方法可以通过:$1…$n,$0为脚本名"echo "三.函数返回值,只能通过$? 系统变量获得"echo "四.局部变量要特别声明"echo "================ 测试加return的参数返回值 ================"echo "注意:1.返回值只能是int,范围在0-255,调用方法和取得返回值之间,不能有任何操作,不然取不到return的值"echo ""echo "1. 测试0-255之间的参数返回值"get_return_int 2 253echo -e "参数返回值为:$? \n"echo "2. 测试>255的参数返回值"get_return_int 10 253echo -e "参数返回值为:$? \n"echo "3. 测试<0的参数返回值"get_return_int -1 -2 echo -e "参数返回值为:$? \n"echo "4. 测试参数返回值为字符,会报错"get_return_str "my name is bixiaopeng" "abc"echo -e "参数返回值为:$? \n"echo "================ 测试不加return的参数返回值 ================"echo "注意:不加return将以最后一条命令运行结果作为返回值,正确为0,错误为1"echo ""echo "1. 最后一条命令执行正确,返回值为0"get_no_return 255echo -e "参数返回值为:$? \n"echo "2. 最后一条命令执行不正确,返回值为1"get_no_return "my name is bixiaopeng"echo -e "参数返回值为:$? \n"echo "================ 全局变量 ================ "echo "global_var=\"website: http://blog.csdn.net/wirelessqa\""get_global_varecho "main函数现次调用全局变量: echo \$global_var"echo $global_varecho "================ 局部变量 ================ "get_local_varecho "main函数现次调用局部变量: echo \$local_var"echo $local_var

 

结果:

 

bixiaopeng@bixiaopengtekiMacBook-Pro Shell备忘录$ bash Shell自定义函数总结.sh自定义函数需知:一.因为shell脚本是逐行运行。不会像其它语言一样先预编译,所以必须在调用函数地方之前,声明函数二.各个输入参数直接用空格分隔,命令里面获得参数方法可以通过:…,Shell自定义函数总结.sh为脚本名三.函数返回值,只能通过0 系统变量获得四.局部变量要特别声明================ 测试加return的参数返回值 ================注意:1.返回值只能是int,范围在0-255,调用方法和取得返回值之间,不能有任何操作,不然取不到return的值1. 测试0-255之间的参数返回值return 255参数返回值为:2552. 测试>255的参数返回值return 263参数返回值为:73. 测试<0的参数返回值return -3参数返回值为:2534. 测试参数返回值为字符,会报错return "my name is bixiaopeng"Shell自定义函数总结.sh: line 6: return: my: numeric argument required参数返回值为:255================ 测试不加return的参数返回值 ================注意:不加return将以最后一条命令运行结果作为返回值,正确为0,错误为11. 最后一条命令执行正确,返回值为0echo 510参数返回值为:02. 最后一条命令执行不正确,返回值为1Shell自定义函数总结.sh: line 18: my name is bixiaopeng*2: syntax error in expression (error token is "name is bixiaopeng*2")参数返回值为:1================ 全局变量 ================global_var="website: http://blog.csdn.net/wirelessqa"函数内更改全局变量:global_var="name: bixiaopeng"main函数现次调用全局变量: echo $global_varname: bixiaopeng================ 局部变量 ================函数内声明局部变量:local local_var="weibo@wirelessqa"main函数现次调用局部变量: echo $local_var