[shell]shell函数
来源:互联网 发布:校园网络推广 编辑:程序博客网 时间:2024/05/16 07:36
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,Shell 也支持函数。Shell 函数必须先定义后使用。Shell 函数的定义格式如下:
[function] fun() { list of commands [ return value ]}说明:
- 可以带function fun() 定义,也可以直接fun() 定义,不带任何参数,function关键字和()必须有其中一个。
- 返回值,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)。
- 参数,()内是没有参数的,它并不像C语言那样,在()里可以有参数。那大家可能就郁闷了,函数调用或多或少总是会需要一些参数,那么这些参数要怎么传递进来呢?其实参数传递方式为:fname;(不需要传递参数)或fname agr1 arg2(需要传递两个参数);
- 直接return通过$?来接收返回值;
- 定义全局变量,通过全局变量来接收的方式,使用函数返回值。
- echo的方式,通过标准输出来返回。
#!/bin/bashfunction sum(){ if [ $# != 2 ] then echo "arg num != 2" return 0 fi return $(( $1 + $2 )) }sum 5 6 #调用函数只需要给出函数名,不需要加括号。echo "5+6=$?" #-->5+6=11; 函数返回值在调用该函数后通过 $? 来获得。sum 100 200 echo "100+200=$?" #-->100+200=44,return后跟数值n(0-255)。300-256=44#向函数传递数组a=(1 2 3 4)sum(){ local sum=0; for v in $@ do sum=$[sum+v] #sum=$(($sum+$v)); done echo $sum; #-->10} sum ${a[@]} #像删除变量一样,删除函数也可以使用 unset 命令,不过要加上 .f 选项, #$unset -f function_name#如果你希望直接从终端调用函数,可以将函数定义在主目录下的 .profile 文件,这样每次登录后,在命令提示符后面输入函数名字就可以立即调用。
- $0:是脚本本身的名字;
- $#:是传给脚本的参数个数;
- $@:是传给脚本的所有参数的列表,即被扩展为"$1" "$2" "$3"等;
- $*:是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个,即被扩展成"$1c$2c$3",其中c是IFS的第一个字符;
- $$:是脚本运行的当前进程ID号;
- $?:是显示最后命令的退出状态,0表示没有错误,其他表示有错误;
0 0
- [shell]shell函数
- shell函数
- Shell 函数
- Shell 函数
- shell函数
- shell --函数
- shell 函数
- shell函数
- shell函数
- 【shell】函数
- shell 函数
- shell---函数
- Shell 函数
- shell函数
- shell 函数
- Shell 函数
- shell函数
- Shell 函数
- AspNetPager 分页控件样式
- C++堆,栈,静态存储区介绍
- iOS进阶面试题----经典10道
- poj1856Sea Battle(DFS)
- NGUI学习笔记(摘)
- [shell]shell函数
- Eclipse时区出问题,与北京时间相差八小时
- HDOJ-4961 Boring Sum
- 下拉框的queryMode相当重要
- iOS7新特性-NSURLSession详解
- CF417D——Cunning Gena(状态压缩DP)
- 2.1 普通查询日志(The General Query Log)
- AspNetPager分页示例—应用CSS样式
- [置顶] 2014训练计划