linux shell自定义函数(定义,返回值,变量作用域)

简介:
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。下面说说它的定义方法,以及调用需要注意那些事项。
 
一、定义shell函数(define function)
[ function ] funname [()]    
 
{    
 
        action;    
 
        [ return  int;]    
 
}    
 
说明:    
 
1、可以带function fun()    定义,也可以直接fun() 定义,不带任何参数。    
 
2、参数返回,可以显示加: return 返回,如果不加,将以最后一条命令运行结果,作为返回值。  return后跟数值n(0-255    
 
 
实例(testfun1.sh): 
 
#!/bin/sh     
fSum 3 2;     
function fSum()     
{     
            echo $1,$2;     
 
             return $(($1+$2));     
 
}     
 
fSum 5 7;     
 
total=$(fSum 3 2);     
 
echo $total,$?;     
 
                                            
 
sh testfun1.sh     
 
testfun1.sh: line 3: fSum: command not found     
5,7     
3,2    
    
 
从上面这个例子我们可以得到几点结论: 
 
1、必须在调用函数地方之前,声明函数,shell脚本是逐行运行。不会像其它语言一样先预编译。一次必须在使用函数前先声明函数。 
 
2、total=$(fSum 3 2);    通过这种调用方法,我们清楚知道,在shell 中 单括号里面,可以是:命令语句。 因此,我们可以将shell中函数,看作是定义一个新的命令,它是命令,因此 各个输入参数直接用 空格分隔。 一次,命令里面获得参数方法可以通过:$0…$n得到。 $0代表函数本身。    
 
3、函数返回值,只能通过$? 系统变量获得,直接通过=,获得是空值。其实,我们按照上面一条理解,知道函数是一个命令,在shell获得命令返回值,都需要通过$?获得。 
 
 
二、函数作用域,变量作用范围
先我们看一个实例(testfun2.sh ): 
view sourceprint?01 #!/bin/sh     
echo $(uname);     
 
declare num=1000; 
     
uname()     
{     
     echo  "test!";     
     ((num++));     
      return 100;     
}     
 
testvar()     
{     
 
         local num=10;     
         ((num++));     
         echo $num;     
}            
uname;     
echo $?     
echo $num;     
testvar;     
echo $num;     
sh testfun2.sh     
Linux     
test!     
100     
1001     
11     
1001    
 
 




本文转自 fenghao.cn 51CTO博客,原文链接:http://blog.51cto.com/linuxguest/545865,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
Shell Linux C语言
Shell 函数
10月更文挑战第4天
34 7
|
4月前
|
存储 Java Shell
Shell 变量
10月更文挑战第2天
38 0
|
5月前
|
Shell
shell脚本变量 $name ${name}啥区别
shell脚本变量 $name ${name}啥区别
|
5月前
|
Java Shell Linux
Shell 变量设置
Shell设置变量
63 5
|
6月前
|
Java Shell Linux
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
关于如何使用Shell脚本来解析Linux系统中的应用服务日志,提供了脚本实现的详细步骤和技巧,以及一些Shell编程的技能扩展。
92 0
【Linux入门技巧】新员工必看:用Shell脚本轻松解析应用服务日志
|
6月前
|
Shell
[shell]在curl测试的data参数中引用变量
[shell]在curl测试的data参数中引用变量
285 1
|
5月前
|
Java Shell Linux
Shell 变量设置25-1
Shell编程语言是一种非类型的解释型语言,无需像C++/Java那样事先声明变量。通过赋值即可定义变量,在Linux支持的所有Shell中均适用。变量分为局部变量与环境变量,前者仅限于定义脚本内使用,后者可在其派生的子进程中使用。常见系统变量如$0表示当前程序名称,$n表示第n个参数(n=1,2,...,9),$*代表所有参数,$#代表参数个数,$?表示命令执行后的状态(0为成功),$UID为当前用户ID,$PWD表示当前目录。定义变量如`A=123`,
40 0
|
6月前
|
Shell Linux 程序员
在Linux中, 什么是shell函数?如何使用它们?
在Linux中, 什么是shell函数?如何使用它们?
|
6月前
|
Shell Linux 程序员
详解shell 运行原理及Linux权限
详解shell 运行原理及Linux权限
|
6月前
|
存储 Cloud Native Linux
CentOS“平替”方案问题之Fedora Linux的定义如何解决
CentOS“平替”方案问题之Fedora Linux的定义如何解决
56 0