shell中函数的使用
函数是一个脚本代码块,你可以对它进行自定义命名,并且可以在脚本中任意位置使用这个函数。如果想要这个函数,只要调用这个函数的名称就可以了。使用函数的好处在于模块化以及代码可读性强。
(1).函数的创建语法
函数的创建方法一:
function 函数名称 {
命令
}
函数的创建方法二:
函数名称() {
命令
}
注意:函数名称在当前脚本必须唯一。
调用函数的方法:
函数名称 参数1 参数2 ......
调用函数时可以传递参数,函数中使用$1、$2......来引用传递的参数。
(2).函数的使用实例
实例1:
[root@youxi1 ~]# vim a.sh
#!/bin/bash
function fun1 {
echo "hello world"
} fun2() {
echo $[$1+$2]
} fun1
fun2 1 2
[root@youxi1 ~]# sh a.sh
hello world
3
实例2:如果存在相同名称的函数,以最后一个为准
[root@youxi1 ~]# vim b.sh
#!/bin/bash
function fun1 {
echo "hello world"
} fun1() {
echo "This is rewrite"
} fun1
[root@youxi1 ~]# sh b.sh
This is rewrite
(3).return返回值
使用return命令来退出函数并返回特定的退出码($?)
[root@youxi1 ~]# vim c.sh
#!/bin/bash
fun1() {
echo "return 3"
return 3
echo "why?"
} fun1
[root@youxi1 ~]# sh c.sh
return 3
[root@youxi1 ~]# echo $?
3
注意:return一般是在函数的最后一行,因为一旦执行return命令,该函数后面的命令就不执行了。
return与exit的区别:return和exit都可以返回退出码,但是不同的是,return是退出函数,而exit是退出整个脚本。
(4).函数值赋给变量
如下方实例中显示,此时的函数就相当于一个命令,需要使用$()或``调用。
[root@youxi1 ~]# vim d.sh
#!/bin/bash
fun1() {
read -p "Input a number:" num
echo $[num*5]
} num2=`fun1` #也可以是$(fun1)
echo $num2
[root@youxi1 ~]# sh d.sh
Input a number:2
10
(5).外部参数传入函数
前面已经提到过,调用函数可以在后面跟随参数,函数内部可以使用$n的形式调用。
[root@youxi1 ~]# vim e.sh
#!/bin/bash
fun1() {
echo $1
} fun2() {
echo $1
} fun3() {
echo $1
} fun1 $1
fun2 /root/a.sh
fun3 5
[root@youxi1 ~]# sh e.sh hello
hello
/root/a.sh
5
(6).函数的参数
在一个脚本当中,函数外的参数,函数可以直接调用,并且函数内的参数,只要运行过函数,外部也可以直接调用。
[root@youxi1 ~]# vim f.sh
#!/bin/bash
num=5
fun1() {
num2=$[num*10]
}
fun1
echo $num2
[root@youxi1 ~]# sh f.sh
50
注意:脚本内的参数仅限脚本内使用
shell中函数的使用的更多相关文章
- shell 中函数放回字符串问题
shell 中函数放回字符串问题 shell 中不可以直接 return 字符串 ,可以return 数字.如果要return 字符串 改为 echo "hello world" ...
- shell中函数返回值
1.前言 快半年没有写博客了,荒废了很久,工作中的杂事太多,自己越来越懒了.为了鞭策自己成长,还是要坚持写写博客,记录自己的成长. 2.shell函数介绍 语法: [ function ] funna ...
- shell从函数文件里调用函数
碰到一个shell中函数调用的小问题,记录一下. shell中函数有三种调用方式,一种是在文件前面定义函数,然后在以下直接调用:一种是通过加载shell,在shell中直接调用:第三种是将函数写入文件 ...
- linux shell自定义函数(定义、返回值、变量作用域)介绍
http://www.jb51.net/article/33899.htm linux shell自定义函数(定义.返回值.变量作用域)介绍 linux shell 可以用户定义函数,然后在shell ...
- Linux Shell 之 Shell中的函数调用
说起函数调用,相信大家也不会陌生,然而对于初学Shell的我来说,Shell中函数调用方式却有点让我不太习惯,自己也走了不少的弯路,因为传递参数时出了一个很“自然”的错误,也让我吃了不少的苦头,所以总 ...
- Linux shell 自定义函数
一.定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1.可以带functi ...
- shell进阶函数
函数的定义和用途 函数function是由若干条shell命令组成的语句块,实现shell代码的重用和模块化编程. 函数和shell程序的异同点 它与shell程序形式上是相似的,不同的是它不是一个单 ...
- shell获取函数的返回值
背景:定义了一个函数,比对本地和线上服务器集群数量差别,想要获取不同集群的个数.shell和其他语言的函数返回值还是差别挺大的. 定义一个函数 functionname(){ 操作内容 ...
- linux shell 自定义函数(定义、返回值、变量作用域)介绍
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用.下面说说它的定义方法,以及调用需要注意那些事项. 一.定义shell函数(define function) 语法: [ f ...
随机推荐
- Spring5.0.x SSM项目中Json转换器 的配置
json作为前后端交互的重要手段,在springMVC中有自带的转换器可以免去平时那些繁琐的事情: pom文件添加:spring5.0以上用Jackson2.9以上的版本 <dependency ...
- nginx重试机制proxy_next_upstream
nginx作为反向代理服务器,后端RS有多台服务器,上层通过一定机制保证容错和负载均衡. nginx的重试机制就是容错的一种 官方链接:http://nginx.org/en/docs/http/ng ...
- go mod开发模式设置
文章要解决的仅仅是一个问题 当你使用go get 无论如何get不到所需的包的问题 第一步就是下载goland 新手极其推荐goland,因为直接使用gland几乎没有挫败感,使用其他工具可能要折腾好 ...
- A Funny Game——打表&&找规律
题目 n枚硬币排成一个圈.Alice和Bob轮流从中取一枚或两枚硬币.不过,取两枚时,所取的两枚硬币必须是连续的.硬币取走之后留下空格,相隔空格的硬币视为不连续.Alice开始先取,取走最后一枚硬币的 ...
- 22-1 web传输视频 Opencv+usb摄像头 树莓派+Flask实现视频流媒体WEB服务器
第一篇 讲解原理 https://blog.miguelgrinberg.com/post/video-streaming-with-flask 第二篇 加入多线程可以直接用 https://gith ...
- php面试题收藏
总结几个要素: 1.个人简介名字大写,内容需要详实,一是可以给人留下映像,二是减少不必要的与面试官交换个人信息的时间.准备一份好的口头自我介绍是很有必要的,毕竟准备一次能用很久,时间花在上面很实用,面 ...
- python函数 | 三元运算
三元运算符就是在赋值变量的时候,可以直接加判断,然后赋值 格式: [on_true] if [expression] else [on_false] 三元运算只适用于简单的if else判断,再多一层 ...
- docz 强大简单的文档管理工具
使用docz我们可以用来方便的编写以及发布文档,同时提供漂亮友好的交互,可以快速的制作一个产品级的 站点,使用了了mdx 文件(还是markdown),同时可以方便的集成到自己的web 项目中 安装试 ...
- cogs 944. [東方S3] 藤原妹红
二次联通门 : cogs 944. [東方S3] 藤原妹红 /* cogs 944. [東方S3] 藤原妹红 最小生成树 + 树形dp 首先对原图跑最下生成树 后建出一棵树 在树上进行dp 先走到叶子 ...
- Js更改整页a标签跳转方式
<script> var anchors = document.getElementsByTagName("a"); for(i=0;i<anchors.leng ...