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 ...
随机推荐
- table的各种用法
使用 colgroup 和 col 实现响应式表格(table的各种用法):http://coderlt.coding.me/2017/11/20/table-colgroup/
- 2019牛客暑期多校训练营(第五场)B:generator 1 (10进制快速幂)
题意:给定x0,x1,a,b,满足xi=a*xi-1+b*xi-2: 求xn,n<10^(10^6): 思路:10进制快速幂裸题.降幂来写好像也是可以的,但是循环节不是phi(mod),所以数学 ...
- 如何保护你的 Python 代码 (一)—— 现有加密方案
https://zhuanlan.zhihu.com/p/54296517 0 前言 去年11月在PyCon China 2018 杭州站分享了 Python 源码加密,讲述了如何通过修改 Pytho ...
- NSURLProtocol
An NSURLProtocol object handles the loading of protocol-specific URL data. @abstract This method reg ...
- render()--组件--纯函数
render() 当 被调用时,它会检查 和 的变化并返回以下类型之一: React 元素.通常通过 JSX 创建.例如,<div /> 会被 React 渲染为 DOM 节点,<M ...
- O2O项目之一 环境搭配
技术栈:vue全家桶(使用nuxtjs:https://zh.nuxtjs.org/guide/installation ) + ssr + redis + mongodb + wabpack + ...
- idea中隐藏.iml文件
在创建父子工程或者聚合工程时产生的大量 .iml 文件,有时会对我们的操作产生干扰,所以,一般情况下,我们都将其隐藏掉,步骤如下: File——>settings——>Editor——&g ...
- Ansible自动部署tomcat
1.首先准备3台机器 ansible机器:192.168.52.34 目标主机:192.168.52.35 目标主机:192.168.52.36 2.关闭防火墙 [root@localhost ~]# ...
- UFUN函数 UF_CSYS函数 UF_MTX函数(如何创建坐标系);
// (题目不够长,写在这了) // 函数有 // UF_MTX3_initialize,UF_CSYS_create_matrix,UF_CSYS_create_csys,UF_CSYS_ask_c ...
- Linux安全加固(二)禁止普通用户su到root/设置SSH终端接入白名单/修改history条数
一.禁止普通用户su到root管理员.设置可以su到root的白名单 1.首先看一下正常情况 2.可以看到普通用户使用su root命令,输入密码即可登录到root用户 3.下面开始配置禁止所有普通用 ...