Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
社区首页 >专栏 >Linux之shell编程函数使用

Linux之shell编程函数使用

作者头像
intsmaze-刘洋
发布于 2019-02-25 08:50:54
发布于 2019-02-25 08:50:54
53700
代码可运行
举报
运行总次数:0
代码可运行

linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。下面说说它的定义方法,以及调用需要注意那些事项。

原文和作者一起讨论:https://cloud.tencent.com/developer/article/1395199

微信:intsmaze

函数定义

代码语言:javascript
代码运行次数:0
复制
#!/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"

调用脚本

代码语言:javascript
代码运行次数:0
复制
[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)

函数参数
代码语言:javascript
代码运行次数:0
复制
#!/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}来获取参数。

代码语言:javascript
代码运行次数:0
复制
[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 !
函数返回值
代码语言:javascript
代码运行次数:0
复制
#!/bin/bash
# fun2.sh
funWithReturn(){
    echo "这个函数会对输入的两个数字进行相加运算..."
    echo "输入第一个数字: "
    read aNum
    echo "输入第二个数字: "
    read anotherNum
    echo "两个数字分别为 $aNum 和 $anotherNum !"
    return $(($aNum+$anotherNum))
}
funWithReturn
echo "输入的两个数字之和为 $? !"#这里上一个命令是 return $(($aNum+$anotherNum))

调用脚本

代码语言:javascript
代码运行次数:0
复制
[hadoop@centos-Reall-131 shtest]$ sh fun2.sh 
这个函数会对输入的两个数字进行相加运算...
输入第一个数字: 
100
输入第二个数字: 
200
两个数字分别为 100200 !
输入的两个数字之和为 44 !#这里上一个命令是 return 300

跨脚本调用函数

假如上述的脚本文件fun1.sh保存在此路径:/root/fun1.sh

则可在脚本fun_other.sh中调用脚本fun1.sh中的函数

代码语言:javascript
代码运行次数:0
复制
#!/bin/bash
# fun_other.sh
.  /root/fun1.sh    # 注:  ./ 之间有空格
# 或者 source /root/fun1.sh
funWithParam 11 22 33 44 55 66 77 88 99 100 101

调用脚本

代码语言:javascript
代码运行次数:0
复制
[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 !
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-04-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
shell学习七函数 原
在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...
用户2603479
2018/08/15
2830
《快学BigData》--Linux 编程(7)
if condition then statements [elif condition then statements. ..] [else statements ] fi
小徐
2023/03/06
1.6K0
《快学BigData》--Linux 编程(7)
03 . Shell数组和函数
Shell数组 简介 数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似)。 与大部分编程语言类似,数组元素的下标由0开始。 Shell 数组用括号来表示,元素用"空格"符号分割开,语法格式如下: # array_name=(value1 ... valuen) 实例 #!/bin/bash my_array=(A B "C" D) # 我们可以使用功能下标来定义数组 array_name[0]=value0 array_n
iginkgo18
2020/09/27
1.4K0
shell 流程控制及函数
不同于常见的 Java 以及 PHP 中的 if 条件语句,shell if 条件语句中不能包含空语句,也就是什么都不做的语句。
happyJared
2019/09/19
3970
《前端运维》一、Linux基础--07Shell函数
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。shell中函数的定义格式如下:
zaking
2022/05/10
1.1K0
《前端运维》一、Linux基础--07Shell函数
Shell 函数
当n>=10时,需要使用${n}来获取参数。 另外,还有几个特殊字符用来处理参数:
小小工匠
2021/08/16
5050
Shell 学习
%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),任何字符都会被显示在10个字符宽的字符内,如果不足则自动以空格填充,超过也会将内容全部显示出来。
李振
2021/11/26
3910
Shell 函数(下)
注意,$10 不能获取第十个参数,获取第十个参数需要${10}。当n>=10时,需要使用${n}来获取参数。
陈不成i
2021/06/23
3090
Shell编程基础
请参考:菜鸟教程参数传递 在执行脚本的时候可以向脚本传递参数,脚本获取参数的格式为:$n
lin_zone
2018/08/15
7870
Shell编程
Shell 是一个用 C 语言编写的程序,通过 Shell 用户可以访问操作系统内核服务。
用户4870038
2021/02/05
5K0
Shell编程
Shell编程从看懂到看开③(函数、echo、printf、test)
在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数...
十八岁讨厌编程
2022/12/10
6620
【知识总结】Shell脚本编程入门
Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。
辉哥
2021/04/01
4.4K0
Shell 编程入门 (转载非原创)
转载来源:https://www.cnblogs.com/lianzhilei/p/15316945.html
xlj
2021/09/23
1.7K1
大数据-Linux的Shell编程
​ chmod +x ./hello.sh #使脚本具有执行权限
cwl_java
2019/12/25
6530
Shell 函数(上)
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。 shell中函数的定义格式如下:
陈不成i
2021/06/23
3240
Shell脚本编程
脚本中一旦遇到exit命令,脚本会立即终止,终止退出状态取决于exit命令后面的数字
星陨1357
2023/03/14
2.1K0
Shell脚本编程
Linux之shell编程条件判断-if,while,for,case
原文和作者一起讨论:http://www.cnblogs.com/intsmaze/p/6675350.html
intsmaze-刘洋
2018/08/29
8140
Shell编程从入门到精通
Shell 是一个用 C 语言编写的程序, 通过 Shell 用户可以访问操作系统内核服务。 它类似于 DOS 下的 command 和后来的 cmd.exe。 Shell既是一种命令语言,又是一种程序设计语言。
硅谷子
2020/12/19
8820
Shell编程从入门到精通
shell极简教程(二)
一,题记 不懂shell的程序员不是好程序员,学习shell是为了自动化,使用自动化可以非常有效的提高工作效率。没有一个大公司不要求linux的基本技能的,只是不同岗位要求掌握的程度不同。在第一篇 shell极简教程 已经对shell进行了简单的介绍,本篇进行更进一步的介绍! 二,shell注释 以“#”开头的行就是注释,会被解释器忽略。   sh里没有多行注释,只能每一行加一个#号。只能像这样: #-------------------------------------------- # 这是一个自动打
架构师小秘圈
2018/04/02
5.3K0
shell脚本快速入门之-----函数
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,shell也支持函数。shell函数必须先定义后使用
不吃小白菜
2020/09/03
9420
相关推荐
shell学习七函数 原
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验