开发者社区> 黑夜路口> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

14.Linux shell编程(函数)

简介: (创建于2018/2/1) 1.简单的一个函数 1 #!/bin/bash 2 3...
+关注继续查看

(创建于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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
LINUX SHELL命令ls只列出目录名
LINUX SHELL命令ls只列出目录名
0 0
LINUX SHELL脚本如何判断一个目录下有没有文件
LINUX SHELL脚本如何判断一个目录下有没有文件
0 0
LINUX SHELL判断一个用户是否存在
LINUX SHELL判断一个用户是否存在
0 0
LINUX SHELL中,变量如何加值
LINUX SHELL中,变量如何加值
0 0
LINUX SHELL使用while循环数组
LINUX SHELL使用while循环数组
0 0
LINUX SHELL读取一个文件,插入到另外一个文件的指定位置
LINUX SHELL读取一个文件,插入到另外一个文件的指定位置
0 0
Linux shell猜数游戏
Linux shell猜数游戏
0 0
常用LINUX配置及SHELL命令集锦-网络配置和系统管理操作
常用LINUX配置及SHELL命令集锦-网络配置和系统管理操作
0 0
LINUX SHELL中for用数组循环
LINUX SHELL中for用数组循环
0 0
LINUX SHELL使用变量控制循环
LINUX SHELL使用变量控制循环
0 0
+关注
黑夜路口
安卓高级工程师,目前任职于Wifi万能钥匙
文章
问答
文章排行榜
最热
最新
相关电子书
更多
Shell 脚本速查手册
立即下载
Debian GNU/Linux 安全合规之路
立即下载
Decian GNU/Linux安全合规之路
立即下载