- 浏览: 152613 次
- 性别:
- 来自: 北京
文章分类
最新评论
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 ):
#!/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我们一起来分析下上面这个实例,可以得到如下结论:
1、定义函数可以与系统命令相同,说明shell搜索命令时候,首先会在当前的shell文件定义好的地方查找,找到直接执行。
2、需要获得函数值:通过$?获得
3、如果需要传出其它类型函数值,可以在函数调用之前,定义变量(这个就是全局变量)。在函数内部就可以直接修改,然后在执行函数就可以读出修改过的值。
4、如果需要定义自己变量,可以在函数中定义:local 变量=值 ,这时变量就是内部变量,它的修改,不会影响函数外部相同变量的值 。
<script></script>
发表评论
-
Linux date 命令使用技巧
2011-08-04 17:10 1044date命令 date命令的功能是显示和设置系统日期和时间 ... -
LDAP over SSL - Modifying Active Directory with PHP
2011-04-29 14:30 2365Some AD objects can be modifi ... -
shell中的加法
2011-03-31 13:43 1536今天搞了半天i=$i+1;因为这句包含在一个较长的shell脚 ... -
Shell #的用法, ${#arrayname[@]}获取数组元素的个数, $arrayname[index]获取属于一个元素 获取数组中的所有元素${arr
2011-03-31 10:35 4040在shell中$#表示输入参数的个数; ... -
设置linux环境变量
2011-03-04 11:29 10181.Linux的变量种类 按变量的生存周期来划分,Lin ... -
Xlib: connection to ":0.0" refused by server的解决方法
2011-03-03 17:00 1099Xlib: connection to ":0.0& ... -
linux的root密码更改
2011-02-24 20:17 908不知道是很久没用的原因还是什么,我的linux的密码竟然 ... -
su与su-的区别(Linux Shell中切换用户)
2011-02-18 12:54 2706前者只是切换了身份,但SHELL环境仍然是原用户的SHEL ... -
在VI编辑器中让所有的字母都变成大写
2011-01-13 10:31 1597在vi中切换到命令行模式(按下ESC),输入以下正则表达 ... -
Linux常用的20个工具
2011-01-06 10:30 1311要监控服务器的运行状况? 尝试一些内建的命令行与少量的外围工具 ... -
tar命令详解
2011-01-05 16:35 860格式: tar 选项 文件目录列表功能: 对文件目录进 ... -
C指针的实质,对底层理解很有好处
2010-12-17 18:06 1622最近对C/C++指针特别感 ... -
网络配置===route命令和netstat命令
2010-12-15 17:03 1288route命令和netstat命令 (netstat - ... -
Linux 网卡配置文件设置
2010-12-15 13:57 12971.配置文件/etc/hosts(本地主机ip地址映射,可以有 ... -
linux设置目录共享
2010-12-10 11:15 9991 vi etc/samba/smb.conf 打开配置文档 ... -
Linux 双击文件夹 不要每次都打开一个新窗口显示
2010-11-25 16:35 1477在打开最顶层文件夹的时候用右键 里面有个浏览文件夹 就可以了 ... -
Linux文件权限详解
2010-11-24 16:24 859一、文件和目录权限概 ...
相关推荐
#### 二、函数的作用域和变量作用范围 在Shell脚本中,了解函数的作用域和变量的作用范围非常重要,这直接影响到函数内部和外部变量的行为。 **示例代码** (testfun2.sh): ```sh #!/bin/sh echo $(uname); declare...
本文将详细讲解Linux Shell自定义函数的定义、返回值处理以及变量作用域。 **一、定义自定义函数** 在Shell中定义函数有两种基本语法形式: 1. 带`function`关键字: ```bash function funname () { action; ...
本文将深入探讨Linux Shell函数的概念、创建、调用以及其在日常系统管理中的应用。 ### 1. Shell函数基础 Shell函数类似于其他编程语言中的函数,它是一段可重复使用的代码块,可以接受参数并返回值。在Shell中,...
Shell并不像传统的高级编程语言那样支持直接的函数返回值,但它提供了几种方式来模拟返回值功能。 首先,我们来看一下Shell中的`return`命令。`return`主要用于结束函数的执行,并返回一个数字状态,通常用来表示...
默认情况下,函数内部定义的变量是全局的,作用域从定义点开始,直到脚本结束。然而,可以使用`local`关键字声明局部变量,它们只在函数内部有效,不会影响到外部的同名变量。函数参数本身就是局部变量,仅限于函数...
6. **深入讨论**(025深入讨论.pdf):这部分可能涉及了更高级的主题,如管道(pipe)、重定向(redirect)、子Shell、变量作用域、环境变量以及错误处理等,这些都是编写复杂脚本时需要理解的关键概念。 7. **运行...
- **变量作用域**(10_变量作用域.pdf):了解全局变量、局部变量的概念,以及`static`关键字的作用,理解作用域规则对代码管理和调试至关重要。 - **运算符**(2_运算符.pdf):掌握算术、比较、逻辑、位操作等...
Linux系统中的变量可以根据其作用域分为几种类型:本地变量、全局变量和内置变量。本地变量的定义范围较小,通常是手工定义的,例如在一个函数内部定义的变量只在该函数内有效。全局变量的定义范围较大,可以在脚本...
函数调用是C语言程序设计的关键,理解函数的参数传递、返回值和作用域对于编写高效代码至关重要。"策略与机智"是编程中需要遵循的原则,意味着在解决问题时既要考虑效率,也要注重灵活性。 面向对象和面向过程是两...
5. 函数:定义、调用函数,参数传递,理解函数的作用域和返回值。 6. 面向过程编程:C语言是面向过程的,重点在于过程的定义和调用。 三、Linux下C语言编程环境搭建 1. 编译器:GCC(GNU Compiler Collection)是...
##### 2.2.3 Scope of Variables:变量的作用域 FISH支持局部变量和全局变量。局部变量仅在其定义的函数内可见,而全局变量在整个程序范围内都是可访问的。 ##### 2.2.4 Functions: Structure, Evaluation and ...
闭包是JavaScript的一个高级特性,它允许函数访问其外部作用域中的变量,即使在外部函数执行完毕后仍能保持该作用域。 3. **对象和原型:** JavaScript中的对象是一种复合数据类型,可以包含属性和方法。JavaScript...
同时,遵循良好的编程规范,如避免全局变量、理解作用域规则、正确处理指针和引用,也是提高代码质量的关键。 总之,《C&C++函数手册》是一本全方位的编程指南,无论是初学者还是经验丰富的开发者,都能从中受益。...
- **变量作用域**:函数内部定义的变量只在函数内部可见,除非使用`global`声明。 函数的调用方式如下: ```python result = function_name(value1, value2) ``` Python还支持高阶函数,如: - **map()**: 应用一...
环境变量对所有子进程可见,而局部变量仅在定义它们的函数或作用域内有效。`export`命令用来设置环境变量。 8. **别名与函数** 别名提供了一种简化常用命令的方法,例如`alias ll='ls -l'`。函数则更灵活,可以...
- **Global与Upvar**:讲解全局变量与局部变量的区别,以及如何使用`global`和`upvar`命令处理变量作用域问题。 #### 十四、Tcl数据结构 - **List(列表)**:介绍Tcl中列表数据结构的使用方法,包括创建、访问和...
4. 全局变量、局部变量和作用域 4. 分支语句 1. if语句 2. if/else语句 3. 布尔代数 4. switch语句 5. 深入理解函数 1. return语句 2. 增量式开发 3. 递归 6. 循环语句 1. while语句 2. do/while语句 3. for语句 4. ...