Linux之shell编程函数使用
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。下面说说它的定义方法,以及调用需要注意那些事项。
函数定义
- #!/bin/sh
- # func1.sh
- hello() ## 函数定义
- {
- echo "Hello there today's date is `date +%Y-%m-%d`"
- # return 2 ###返回值其实是状态码,只能在[0-255]范围内
- }
- hello #函数调用
- echo $? #获取函数的return值,就是获取上一个命令的状态码,如果return 2没有注释,就是获取return 2 命令的状态吗。
- echo "now going to the function hello intsmaze"
调用脚本
- [hadoop@centos-Reall-131 shtest]$ sh func1.sh
- Hello there today's date is 2017-04-06
- 0
- now going to the function hello intsmaze
注意:
1.必须在调用函数之前,先声明函数,shell脚本是逐行运行。不会像其它语言一样先预编译。
2.函数返回值,只能通过$? 系统变量获得,可以显示加:return 返回,如果不加,将以最后一条命令运行结果,作为返回值。 return后跟数值n(0-255)
函数参数
- #!/bin/bash
- # fun1.sh
- funWithParam(){
- echo "第一个参数为 $1 !"
- echo "第二个参数为 $2 !"
- echo "第十个参数为 $10 !"
- echo "第十个参数为 ${10} !"
- echo "第十一个参数为 ${11} !"
- echo "参数总数有 $# 个!"
- echo "作为一个字符串输出所有参数 $* !"
- }
- funWithParam 1 2 3 4 5 6 7 8 9 34 73
注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。
- [hadoop@centos-Reall-131 shtest]$ sh fun1.sh
- 第一个参数为 1 !
- 第二个参数为 2 !
- 第十个参数为 10 !
- 第十个参数为 34 !
- 第十一个参数为 73 !
- 参数总数有 11 个!
- 作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !
函数返回值
- #!/bin/bash
- # fun2.sh
- funWithReturn(){
- echo "这个函数会对输入的两个数字进行相加运算..."
- echo "输入第一个数字: "
- read aNum
- echo "输入第二个数字: "
- read anotherNum
- echo "两个数字分别为 $aNum 和 $anotherNum !"
- return $(($aNum+$anotherNum))
- }
- funWithReturn
- echo "输入的两个数字之和为 $? !"#这里上一个命令是 return $(($aNum+$anotherNum))
调用脚本
- [hadoop@centos-Reall-131 shtest]$ sh fun2.sh
- 这个函数会对输入的两个数字进行相加运算...
- 输入第一个数字:
- 100
- 输入第二个数字:
- 200
- 两个数字分别为 100 和 200 !
- 输入的两个数字之和为 44 !#这里上一个命令是 return 300
跨脚本调用函数
假如上述的脚本文件fun1.sh保存在此路径:/root/fun1.sh
则可在脚本fun_other.sh中调用脚本fun1.sh中的函数
- #!/bin/bash
- # fun_other.sh
- . /root/fun1.sh # 注: . 和 / 之间有空格
- # 或者 source /root/fun1.sh
- funWithParam 11 22 33 44 55 66 77 88 99 100 101
调用脚本
- [hadoop@centos-Reall-131 shtest]$ sh fun_other.sh
- 第一个参数为 1 !
- 第二个参数为 2 !
- 第十个参数为 10 !
- 第十个参数为 34 !
- 第十一个参数为 73 !
- 参数总数有 11 个!
- 作为一个字符串输出所有参数 1 2 3 4 5 6 7 8 9 34 73 !
- 第一个参数为 11 !
- 第二个参数为 22 !
- 第十个参数为 110 !
- 第十个参数为 100 !
- 第十一个参数为 101 !
- 参数总数有 11 个!
- 作为一个字符串输出所有参数 11 22 33 44 55 66 77 88 99 100 101 !
Linux之shell编程函数使用的更多相关文章
- 【Hadoop离线基础总结】linux的shell编程
linux的shell编程 基本了解 概述 Shell是一个用C语言编写的程序,通过shell用户可以访问操作系统内核服务,它类似于DOS下的command和后来的cmd.exe.Shell既是一种命 ...
- Linux 下shell 编程学习脚手架
linux body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding-t ...
- Linux下Shell编程
Linux的shell编程 1.什么是shell? 当一个用户登录Linux系统之后,系统初始化程序init就为每个用户执行一个称为shell(外壳)的程序. shell就是一个命令行解释器,它为用户 ...
- linux之shell编程基本语法
Shell是用户与内核进行交互操作的一种接口,目前最流行的Shell称为bash Shell.Shell也是一门编程语言<解释型的编程语言>,即shell脚本<就是在用linux的s ...
- 3. Linux的shell编程
Shell 是一个用 C 语言编写的程序, 通过 Shell 用户可以访问操作系统内核服务.它类似于 DOS 下的 command 和后来的 cmd.exe.Shell 既是一种命令语言,又是一种程序 ...
- Linux之shell编程的基本使用
1.Shell shell是一个命令行解释器,它为用户提供了一个向 Linux 内核发送请求以便运行程序的系统级程序 2.shell编程打印hello world 2.1 代码部分 #!/bin/ba ...
- Linux操作系统shell与函数详解
shell和函数的定义 1. linux shell 函数 将一组命令集或语句形成一个可用的块, 这些语句块称为函数. 2. shell 函数的组成 函数名:函数名字,注意一个脚本中函数名要唯一, ...
- linux中shell编程
shell编程 1 echo -e 识别\转义符 \a \b \t \n \x十六进制 \0八进制 等等 #!/bin/bash echo -e "hello world" 执行脚 ...
- linux下shell编程示例-获取进程id
今天初步学习了一下linux下的shell编程,简单记录一下测试用例 1.编辑shell脚本文件如下: #!/bin/bashecho "hello bash linux"echo ...
随机推荐
- BZOJ 3401: [Usaco2009 Mar]Look Up 仰望(离线+平衡树)
刷银组刷得好开心= = 离线按权值排序,从大到小插入二叉树,查找树中比这个数大的 CODE: #include<cstdio>#include<iostream>#includ ...
- 学习笔记——Java类和对象
今天学习了Java的类和对象的相关知识,由于Java面向对象的编程的思想和C++几乎一样,所以需要更多的关注Java的一些不同之处. 1.类 1.1 在类这一块,除了基本的成员变量,成员方法,构造函数 ...
- p1154 地平线
题目描述 Farmer John的牛们认为,太阳升起的那一刻是一天中最美好的,在那时她们可以看到远方城市模糊的轮廓.显然,这些轮廓其实是城市里建筑物模糊的影子. 建筑物的影子实在太模糊了,牛们只好把它 ...
- linux 下 zookeeper安装
1.安装zookeeper-3.4.6cd /usr/soft#解压zookeeper 安装包tar -zvxf zookeeper-3.4.6#拷贝安装包到安装目录cp zookeeper-3.4. ...
- USTC 1119 graph 图的同构
USTC 1119 图的同构的严格定义可以参考离散数学:The simple graphs G1=(V1,E1) and G2=(V2,E2)are isomorphic if there exist ...
- Spring+CXF的WebServices简单示例
本文就最简单的WebServices示例来演示Spring和CXF的整合. 使用Maven创建webapp项目,pom如下 <properties> <cxf.version> ...
- Visual Studio 20周年,我和VS不得不说的故事(内含福利)
Visual Studio 2017正式版已如期发布(点击这里查看发布全记录)!自去年 11 月正式宣布 Visual Studio 项目之后,微软终于正式推出了“宇宙最强集成开发环境(IDE)”的最 ...
- BOM基础(四)
最近写的文章感觉内容不像之前那么充实,内容可能也有点杂.对于DOM,和BOM来说,要理解是不难的,难的是做的时候.要自己想的到,而且,对于目前阶段来说,BOM还存在着很大的兼容性问题,最主要就是要兼容 ...
- 学习H5一周随笔
H5学习也已经进行了一个周了,除了学习过程中的乱哄哄的脑子,对H5初学者(我)常见的问题有了如下见解. 1.初学者在建立新的Html文件之后,有时候会把 <meta charset=" ...
- JSP +++SERVIET总复习
一. JSP基础概念 软件架构 B/S架构:Browser/Server,浏览器-服务器 最大的优点就是:一次部署,处处访问. C/S架构:Client/Server,客户端-服务器 功能.事件丰富, ...