shell脚本之函数的使用
把代码封装成函数,相当于造了一个“轮子”,之后就直接重复使用即可。
函数的创建
shell中函数的创建有2种方式
1.使用function关键字
语法
function test {
...
}
2.使用括号
语法
test() {
...
}
函数的调用
记住三点即可。
1.调用方法
直接写函数名
test
2.先定义后调用
3.对于同名的函数,后面的会覆盖前面的
函数的返回值
使用默认的退出状态码有bug,所以推荐自定义退出码的方式。
test(){
...
return 5
}
test
echo $?
注意点
1.函数一调用完成就马上使用返回值(因为$?会显示上一条语句的返回值)
2.返回值范围在0~255
函数做为变量的值
编程语言中,将函数调用赋值给变量是很常见的事,但是shell中的情况有些不太一样
1.当函数调用赋值给变量时,并不会执行函数
2.函数的第一个echo语句的结果会被赋值给变量,剩下echo 语句或者代码正常执行
3.返回值并不会赋值给变量
function test {
echo 1
echo 2
return 6
}
echo 11
t=$(test)
echo "t: $t"
echo hello
结果
t: hello
向函数传递参数
记住以下几点
1.在脚本中调用函数时,必须将参数和函数调用放在同一行
2.在函数中,可以使用参数的环境变量来获取参数值
3.脚本在命令行中的参数值,需要在调用函数时一起传入
function test {
echo $1
echo $2
return 6
}
test $1 $2
结果
u
me
注意:
这里函数中$1和$2和调用时的含义不一样。
函数中的$1和$2指向脚本中函数调用时的参数;而调用时的$1和$2指向命令行中的参数。
在函数中使用变量
在函数中定义局部变量要使用local关键字
local test
向函数中传递数组
将数组中的元素分解开,之后在函数内部进行重组
function testit {
local newarray
newarray=(;'echo "$@"')
echo "The new array value is: ${newarray[*]}"
}
myarray=(1 2 3 4 5)
echo "The original array is ${myarray[*]}"
testit ${myarray[*]}
结果
The original array is
The new array value is:
创建库文件
库文件可以实现一次定义函数,终生使用
库文件
a() {
echo ni
}
脚本文件
#!/bin/bash . ./library
在命令行使用函数
单行方式
function test { ...; }
注意:tset之后必须有空格,语句结尾要加;。
多行方式
function test {
>...
>...
>}
注意:如果函数名和内置命令冲突,那么会覆盖内置命令!
在.bashrc中使用函数
直接在.bashrc文件中定义函数或者载入库文件即可。
使用shtool公共函数库
下载
传送门:ftp://ftp.gnu.org/gnu/shtool/shtool-2.0.8.tar.gz
安装
tar xf shtool...
cd shtool...
./configure
make
make test #测试
shtool库文件

语法
shtool [options] [function [options] [args]]
shtool platform --help
Usage: shtool platform [-F|--format <format>] [-S|--sep <string>] [-C|--conc <string>] [-L|--lower] [-U|--upper] [-v|--verbose] [-c|--concise] [-n|--no-newline] [-t|--type <type>] [-V|--version] [-h|--help]
shell脚本之函数的使用的更多相关文章
- Linux Shell脚本编程-函数
函数介绍 定义:把一段独立功能的的代码当做一个整体,并为之一个名字,命名的代码段,此即为函数: 功能:函数function是由若干条shell命令组成的语句块,实现代码重用和模块化编程. 注意: ...
- Shell脚本之八 函数
一.函数定义 Linux shell 可以用户定义函数,然后在shell脚本中可以随便调用. shell中函数的定义格式如下: [ function ] funname [()] { action; ...
- shell脚本的函数介绍和使用案例
#前言:今天我们来聊聊shell脚本中的函数知识,看一下函数的优势,执行过程和相关的使用案例,我们也来看一下shell和python的函数书写方式有什么不同 #简介 .函数也具有别名类似的功能 .函数 ...
- Shell脚本(五)函数
总结下shell中的函数用法 #!/bin/bash function add_v1() { echo "call function add" } function add_v2( ...
- Shell脚本学习 - 函数,输入输出重定向,文件
函数 函数定义 [ function ] funname [()] { action; [return int;] } 定义时可以是function fun(),也可以直接fun(),不带参数 返回值 ...
- shell脚本 4 函数与正则
shell函数 shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数.给这段代码起个名字称为函数名,后续可以直接调用该段代码. 格式 func() { #指定函数名 ...
- shell脚本中${...}函数的用法总结
${...}在字符串中有非常多的用法: 1.${var} 限定变量. 如果一个变量名A是另一个变量名AB的前部分,那么,如果要在AB相连时,要得到A的值,就必须使用${var}限定. 如果变量名不会产 ...
- 在shell脚本中使用函数
转载请标明:http://www.cnblogs.com/winifred-tang94/ 对于在脚本中重复使用的功能模块,可以封装成为函数. shell脚本中函数的定义可以使用如下两种方式: a. ...
- shell脚本函数及数组
函数介绍: 函数function是由若干条shell命令组成的语句块,实现代码重用和模块话编程. 它与shell程序形式上是相似的,不同的是它不是一个单独的进程,不能独立运行,而是shell程序的一部 ...
随机推荐
- [Mac OS] Homebrew简介及安装wine
Homebrew官网 http://brew.sh/index_zh-cn.html Homebrew是神马 linux系统有个让人蛋疼的通病,软件包依赖,好在当前主流的两大发行版本都自带了解决方案, ...
- dedecms v5.5 final getwebshell exploit(datalistcp.class.php)
测试方法: @Sebug.net dis本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负! <?php print_r(' +---------------------- ...
- DGN格式转化为shp格式 【转】
其实本来,我就是需要把一个autocad的dwg/dgn格式的东西导入到google earth里面:但是首先我对dwg/dgn格式的东西根本就不熟:其次我拿到的dwg/dgn格式文件是用的HK80 ...
- hello-循环神经网络(RNN)原理
主要的应用:机器翻译,自然语言处理,文本处理,语音识别, 图像描述生成 (Generating Image Descriptions), 图像问答QA.... 循环神经网络(RNN)原理通俗解释 1. ...
- 详细记录ASP.NET中的图象处理
最近做网站时,要求上传能加上水印,就研究了一下相关的功能.推荐一下程序人生的网站,大家也可以写一些开发感悟在上面.在使用ASP的时候,我们时常要借助第三方控件来实现一些图象功能.而现在,ASP.NET ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- Exdata cell 节点配置时遇到的一个问题
问题描写叙述: [celladmin@vrh4 ~]$ cellcli CellCLI: Release 11.2.3.2.0 - Production on Sat Jun 14 09:11:08 ...
- 更简单更全的material design状态栏
从实际使用须要出发,以最简单的方式实现了几种类型的MD状态栏. (重点在fitsSystemWindows的使用) 0,使用前提 Theme.AppCompat.Light.DarkActionBar ...
- .NET破解之爱奇迪(三)
本教程只能用于学习研究,不可进行任何商业用途.如有使用,请购买正版,尊重他人劳动成果和知识产权! .NET破解之爱奇迪(一) .NET破解之爱奇迪(二) 一打开软件,就看到各种注册和未注册提示信息,就 ...
- 查找文本工具grep
许多时候需要从一大堆的命令输出或文本内容中找出一两行关键的内容,例如从系统用户文件中查找某个用户.如果不借助工具,这将是一项非常繁琐的工作,这时可以使用grep工具对内容进行筛选. grep(glob ...