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 ...
随机推荐
- 洛谷P3069 [USACO13JAN]牛的阵容Cow Lineup(尺取法)
思路 考虑比较朴素的解法,枚举每个长度为\(k+1\)的区间,然后统计区间中出现次数最多的颜色.这样的话复杂度为\(O(n*k)\)的,显然不行. 观察到统计每个区间中出现次数最多的颜色中,可以只用看 ...
- selenium-1-python
python selenium from selenium import webdriver from selenium.webdriver.common.action_chains import A ...
- docker, docker-compose安装和使用
官方文档: 安装docker: https://docs.docker.com/install/linux/docker-ce/centos/ 安装docker-compose: https://do ...
- 利用requests库访问网站
1.关于requests库 函数 Response对象包含服务器返回的所有信息,也包含请求的Request信息. 访问百度二十次 import requests def getHTMLText(url ...
- QT工程中添加资源(简单明了)
1. 在工程文件下右击添加新文件 2. 在QT目录下选择QT Resource File 3. 填写资源名称 4. 点击完成就可以看到自己建立的资源了 5. 点击右键添加现有文件,找到自己要添加的资源 ...
- 学习:STL概念学习
STL初识: 为了建立数据结构和算法的一套标准,诞生了STL STL基本概念: STL(Standard Template Library,标准模板库) STL 从广义上分为: 容器(containe ...
- Gym100676 H. Capital City
感觉题目都已经快把正解给说出来了...strongly connected的两个点的消耗为0,其实就是同一个边双连通分量里面的点消耗为0.然后缩一下点,再树形DP一下就完了.第一次写边双,但感觉挺简单 ...
- Word pair Hu
Memorize words in the way of games, learn foreign languages, and be more handy
- HNOI2015总结
// 此博文为迁移而来,写于2015年4月21日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102vy9t.html 这次省 ...
- Javascript总结(全)
说明 个人感觉总结得很好忍不住要分享,转载自github地址,作者博客原文发现打不开,于是复制粘贴到此处,如有侵权,请联系本人删除. Type class TypeFn { isString (o) ...