打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
shell函数的6个特点

最近系统的学习了一下shell的函数,总体感觉根其他语言的函数差不多,不过它也有自身的特点

一,调用函数必须在定义函数的后,不然会报错的

  1. fun  
  2.   
  3. fun (){  
  4.  echo "aaaaaa"  
  5. }  
  6.   
  7. fun  

返回结果如下:

  1. [root@krlcgcms01 mytest]# sh fun.sh  
  2.  fun.sh: line 1: fun: command not found       //第一次调用fun是报错的,fun没有定义  
  3.  aaaaaa                                       //第二次调用fum显示的结果  

如果是php或者是javascript的话,就不会出现这样的问题

二,向shell函数传递参数很有特点

  1. fun2 (){  
  2.  echo $0                      //$0本身文件名  
  3.  if [ $1 ]                    //参数为什么都是从$1开始呢,$0是本身文件名  
  4.  then  
  5.  echo "param1 is "$1  
  6.  else  
  7.  echo "param1 is null"  
  8.  fi  
  9.  if [ $2 ]  
  10.  then  
  11.  echo "param2 is "$2  
  12.  fi  
  13. }  
  14.   
  15. fun2 aaa bbb                 //向fun2传2个参数  
  16. fun2 ccc                     //向fun2传1个参数  
  17. fun2                         //不传参数  

返回结果如下:

  1. [root@krlcgcms01 mytest]# sh fun2.sh  
  2. pa.sh                     //第一次调用fun2,显示$0的值  
  3. param1 is aaa  
  4. param2 is bbb  
  5. pa.sh                     //第二次调用fun2,显示$0的值  
  6. param1 is ccc  
  7. pa.sh                     //第三次调用fun2,显示$0的值  
  8. param1 is null  

这样的传参方式,很特别吧。

三,引用举例

  1. reference ()  
  2.  {  
  3.  pa=\$"$1"                      //$1显示的是param  
  4.  echo $pa                       //显示的是$param  
  5.  x=`eval "expr $pa "`           //x为test  
  6.  echo $1=$x                     //param=test  
  7.  local aaa=$x                   //定义局部变量  
  8.  bbb=$x                         //默认全局变量  
  9.  eval "$1='test been modified'"  
  10.  return 1   //最大返回整数257  
  11.  }  
  12.   
  13. param="test"  
  14. echo $param " is test"  
  15.   
  16. reference param  
  17. return_value=$?                  //返回值存放在$?里面  
  18. echo "return value is " $return_value  
  19. echo $param " is not test"  
  20.   
  21. return_value=$?  
  22. echo "return value is " $return_value  
  23.   
  24. echo "aaa = "$aaa      //局部变量外面不能调用  
  25. echo "bbb = "$bbb  

返回结果如下:

  1. [zhangy@localhost zhangy]$ sh re.sh  
  2. test  is test  
  3. $param  
  4. param=test  
  5. return value is  1  
  6. test been modified  is not test  
  7. return value is  0  
  8. aaa =  
  9. bbb = test  

从上面的这个例子,我总结以下几点:

1,传引用也挺特别的,function  max(&$num_a,$num_b){}如果方法体中$num_a改变了的话,调用的变量也会改变。shell引用的思想差不多,但是形势不一样。

2,shell函数的返回值,只能是整形,并且在0-257之间。

3,在方法定义的变量,如果没有做特别声明,一般都是局部变量,而shell正好相反,局部变量要特别声明。

4,调用方法和取得返回值之间,不能有任何操作,不然取不到return的值。

结合前二个例子显示的特点,差不多有6个特点,肯定还有其他的一些特性,待大家补充。

0
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
linux shell 自定义函数(定义、返回值、变量作用域)介绍
使用递归方法和for循环方法求阶乘
Shell基本语法:
Linux常用内建命令笔记
快,学会 shell
INDEX函数与MATCH函数的使用方法图解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服