shell 函数使用总结
2013-07-17 14:04
204 查看
bash 调用函数时不会开启新的子shell ,bash 会在现有的Shell 环境中执行该函数
1.函数的语法
1.1 function 函数名称()
{
命令区域
}
1.2 函数名称()
{
命令区域
}
1.3 function 函数名称
{
命令区域
}
2.函数的结束状态
执行函数时候,函数中最后一个命令的传回值代表函数的结束状态。执行函数,如果仅仅是遇到return
命令,就立即结束,回到调用函数的下一个命令,此时函数的传回值为0
如果rerurn 3 或其他的值,那么函数返回的值就是return 后面的值
3.函数与变量的作用范围
如果没有特别的设定变量的属性,那么,在脚本中自定义的变量为全局变量,它的作用范围在整个脚本中都有效。
在函数中使用内置的命令local,可以在设定变量为函数私有,变量在函数内才有效,比如:
i=2
getline()
{
local i
}
此处的的i 即使和外部的变量i,是完全不同的变量。
3.位置参数
位置参数的的使用 $0 代表script 文件名,$1 代表第一个位置参数,$2代表第二个。依次类推,如果超过9个位置参数,要用
${n}来表示,如${10} 代表第10个。$#代表参数的个数,$@代表所有以空白隔开的参数,$* 代表所有参数所组成的字符串。
当函数借用命令行的位置参数时,原位置参数值会被暂时保存起来,等到函数执行结束,在复原其值。
传递参数给函数的语法如下:
函数名称 参数1 参数2 参数3 ...
函数名称及各参数之间用空格符隔开。
4.命令行的位置参数
script 参数1 参数2 参数3 ... ...
用法和函数的位置参数一致
5.移动位置参数
bash 的内置命令shift 可以往前移动位置参数的值
shift n
其中,n是正整数,代表要往前移动的次数。n可以省略不写,代表移动1次。执行shift n ,${n+1}的值会放入$1.
以执行shift 命令来说(不制定次数),$2的值会放入$1,$3的值会放入$2,$4 会放入$3,依次类推。如果一直执行shift(次数>=n),最后会把所有的位置参数($1~$n)清空
6.制定位置参数的值
根据需要可以指定位置参数的值,称为重置(reset).bash 的内置命令set,可以达成这目的。par3.sh
set 61 62 63 64 65 67 68 69
for p in $@
do
((i++))
echo "第$i个位置参数 \$$i = $p" \$$i 获得变量的ID
echo "本程序命令行的参数值:$@"
# par3.sh dean tom joy
命令行的参数值不受调用函数的影响
7.取用命令行的选项和参数
在script 设计时,往往需要有命令行中取得用户的提供的选项和参数,根据不同的选项,脚本有不同的处理方式和执行
结果。选项的使用方式,可以是单一选项,也可以在选项后方加上准备作用的参数,而且,选项出现的次序并没有严格要求。
8.函数库
例如建立一个函数库叫mylib1.sh,在文件中可以写多个个函数。
在/etc 目录下建立libs 目录
. 路径/函数库文件名 或者 source 路径/函数库文件名
如果需要调用函数库文件中的函数
#!/bin/bash
source $mydir/mylib1.sh
这样在本脚本中就可以调用mylib1.sh 中的脚本
9.递归函数
bash 也支持递归函数,在函数体内,调用函数本身
1.函数的语法
1.1 function 函数名称()
{
命令区域
}
1.2 函数名称()
{
命令区域
}
1.3 function 函数名称
{
命令区域
}
2.函数的结束状态
执行函数时候,函数中最后一个命令的传回值代表函数的结束状态。执行函数,如果仅仅是遇到return
命令,就立即结束,回到调用函数的下一个命令,此时函数的传回值为0
如果rerurn 3 或其他的值,那么函数返回的值就是return 后面的值
3.函数与变量的作用范围
如果没有特别的设定变量的属性,那么,在脚本中自定义的变量为全局变量,它的作用范围在整个脚本中都有效。
在函数中使用内置的命令local,可以在设定变量为函数私有,变量在函数内才有效,比如:
i=2
getline()
{
local i
}
此处的的i 即使和外部的变量i,是完全不同的变量。
3.位置参数
位置参数的的使用 $0 代表script 文件名,$1 代表第一个位置参数,$2代表第二个。依次类推,如果超过9个位置参数,要用
${n}来表示,如${10} 代表第10个。$#代表参数的个数,$@代表所有以空白隔开的参数,$* 代表所有参数所组成的字符串。
当函数借用命令行的位置参数时,原位置参数值会被暂时保存起来,等到函数执行结束,在复原其值。
传递参数给函数的语法如下:
函数名称 参数1 参数2 参数3 ...
函数名称及各参数之间用空格符隔开。
4.命令行的位置参数
script 参数1 参数2 参数3 ... ...
用法和函数的位置参数一致
5.移动位置参数
bash 的内置命令shift 可以往前移动位置参数的值
shift n
其中,n是正整数,代表要往前移动的次数。n可以省略不写,代表移动1次。执行shift n ,${n+1}的值会放入$1.
以执行shift 命令来说(不制定次数),$2的值会放入$1,$3的值会放入$2,$4 会放入$3,依次类推。如果一直执行shift(次数>=n),最后会把所有的位置参数($1~$n)清空
6.制定位置参数的值
根据需要可以指定位置参数的值,称为重置(reset).bash 的内置命令set,可以达成这目的。par3.sh
set 61 62 63 64 65 67 68 69
for p in $@
do
((i++))
echo "第$i个位置参数 \$$i = $p" \$$i 获得变量的ID
echo "本程序命令行的参数值:$@"
# par3.sh dean tom joy
命令行的参数值不受调用函数的影响
7.取用命令行的选项和参数
在script 设计时,往往需要有命令行中取得用户的提供的选项和参数,根据不同的选项,脚本有不同的处理方式和执行
结果。选项的使用方式,可以是单一选项,也可以在选项后方加上准备作用的参数,而且,选项出现的次序并没有严格要求。
8.函数库
例如建立一个函数库叫mylib1.sh,在文件中可以写多个个函数。
在/etc 目录下建立libs 目录
. 路径/函数库文件名 或者 source 路径/函数库文件名
如果需要调用函数库文件中的函数
#!/bin/bash
source $mydir/mylib1.sh
这样在本脚本中就可以调用mylib1.sh 中的脚本
9.递归函数
bash 也支持递归函数,在函数体内,调用函数本身
相关文章推荐
- linux c之通过popen和pclose函数创建管道执行shell 运行命令使用总结
- shell脚本里函数定义和变量使用
- OpenCv函数cvLoadImage的使用问题总结
- 在linux应用程序使用system函数执行简单的shell交互命令的方法
- VC的MFC中重绘函数的使用总结
- C++中的常用数学函数使用总结
- Shell脚本test命令使用总结和实例
- Oracle分析函数/聚合函数使用总结 .
- 【转】VC的MFC中重绘函数的使用总结(整理)
- shell数组使用经验总结
- Excel常用函数总结--记一次数据操作中使用函数
- fopen\fread\fwrite\fscanf\fprintf\fseek\feof\rewind\fgets\fputc等系列函数使用总结
- fopen\fread\fwrite\fscanf\fprintf\fseek\feof\rewind\fgets\fputc等系列函数使用总结
- 8.17_Linux之bash shell脚本编程入门篇(三)之循环以及函数function的使用
- c语言getchar()函数使用总结
- shell使用汇总1——零星总结
- ORACLE函数使用问题总结
- linux c之strncpy函数和strncmp函数最简单使用总结
- shell中函数的使用
- 分享:WebView使用总结(应用函数与JS函数互相调用)