14.Linux shell编程(函数)

(创建于2018/2/1)

1.简单的一个函数

  1 #!/bin/bash                                                                              
  2 
  3 function myfunc{    //注意这里没有(),函数名何{之间没有空格导致出错,空格一定要有
  4     echo "myfunc"
  5 }
  6 myfunc              //调用函数
      
  创建函数的格式,有两种:
  function name {
    commands
  }
  或
  name() {
    commands
  }
  
  执行后:
   tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./16.sh 
   ./16.sh: line 4: syntax error near unexpected token `echo'
   ./16.sh: line 4: `    echo "myfunc"'
       
   错在哪里?注意myfunc函数和后边的大括号间需要有空格
   
   正确写法:
   #!/bin/bash                                                                              
  
   function myfunc {
     echo "myfunc"
   }
   myfunc
   
   最好这样,换行防止错误
   
   #!/bin/bash                                                                              
  
   function myfunc 
   {
     echo "myfunc"
   }
   myfunc

2.函数重名,也是定义函数的两种方式

  1 #!/bin/bash                                                                              
  2 
  3 function myfunc    //去掉function会报错  myfunc: command not found
  4 {
  5     echo "myfunc"
  6 }
  7 myfunc
  8 
  9 myfunc()          //定义了一个和上边函数同名的函数,区别在于,这里没有使用function 关键字,还多了一个()
                      //这是两种定义函数的方式
 10 {
 11     echo "myfunc2"
 12 }
 13 
 14 myfunc
 
 
 执行结果
  tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./16.sh 
  myfunc
  myfunc2
  
  
  去掉第二个同名函数的小括号
  
  1 #!/bin/bash                                                                              
  2 
  3 function myfunc
  4 {
  5     echo "myfunc"
  6 }
  7 myfunc
  8 
  9 myfunc
 10 {
 11     echo "myfunc2"
 12 }
 13 
 14 myfunc
 
 结果
 
tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./16.sh 
myfunc
myfunc
myfunc2
myfunc

3.函数传参和返回值

  1 #!/bin/bash                                                                              
  2 
  3 function myfunc
  4 {
  5     echo $[ $1 + $2 ]
  6 }
  7 
  8 value=$(myfunc 10 90)
  9 echo "value :$value"
      
  结果
  
  100

4.函数调用局部变量和引入函数库

16.sh
    
  1 #!/bin/bash                                                                              
  2 source ./17.sh     //source关键字引入函数库文件
  3 //. .17.sh         //这种写法也同样是引入库文件,“.”就代表source关键字
  4 function myfunc
  5 {
  6     echo $beaty    //使用局部变量
  7 }
  8 beaty=12
  9 
 10 myfunc
 11 
 12 echo "add value:$(add 10 30)"     //调用库文件中的函数
      
17.sh

  1 #!/bin/bash                                                                              
  2 
  3 function add()
  4 {
  5     echo $[ $1 + $2 ]
  6 }


执行结果
tabstop=8root@iZbp11v3y27wpf6mglp2glZ:/user/renzhenming/shell# ./16.sh 
12
add value:40
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 原文地址:C语言函数调用栈(一)C语言函数调用栈(二) 0 引言 程序的执行过程可看作连续的函数调用。当一个函数执...
    小猪啊呜阅读 10,174评论 1 19
  • 文→_→张琮楠 很多时候,你会觉得生活是一名顶级赛车手,它把你搁置在极为空旷地带,让你孤零零的,显得有些绝望,然后...
    张琮楠阅读 2,166评论 0 0
  • 登楼一望路几千, 远树含烟在平原。 秦淮歌渐远, 盛京志欲闲。 卷帷空叹月, 摇扇梦有声。 樽前无阳关, 知到第几程?
    Lotus吴阅读 1,852评论 0 4
  • 汉字,Ascii码,根据字库解析成点阵 首先来了解两个概念,什么是点阵,若干个虚实的点组成的一个矩阵;什么是字库,...
    jarylan阅读 12,613评论 8 8
  • 审计、金融学生工作简讯 为了让学生了解“考试的规定相关要求。” 2017年12月24日,审计一班、...
    阿奴晨露阅读 1,501评论 0 0