文档章节

【Linux 系统编程】shell 脚本基础学习之函数(五)

徐昊
 徐昊
发布于 2016/11/03 12:18
字数 1072
阅读 3
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

前言

Linux shell脚本基础学习我们这里就差不多讲完了,函数相信大家都不陌生吧,直接入正题吧~

原文链接请标明:
http://blog.csdn.net/u011974987/article/details/52718164
本文出自:【stromxu的博客】

正文

继上篇博客之后

shell 函数

Linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
shell 中函数的定义格式如下:

function_name () {
    list of commands
    [ return value ]
}

说明:

  • 1、函数名前面也可以加上关键字function;
  • 2、函数的返回值,可以显示加:return 返回,如果不加,将以最后一条命令的运行结果作为返回值。

shell 函数返回值只能是整数,一般用来表示函数执行是否政工,0表示成功,其他则表示失败。

如果要让函数返回字符串,那么可以先定义一个变量,用来接收函数的计算结果,脚本在访问这个变量来获得函数的返回值。

比如:

  1 #!/bin/bash 
  2 Hello () {
  3         echo "My name is xu hao"
  4 }
  5 
  6 #调用上面的函数
  7 Hello

运行结果:

root@iZ28t5k4ny4Z:/usr/xiho/shell# ./06.sh 
My name is xu hao

调用函数只需要给出函数名,不需要加括号。

再来看一个带有return语句的函数:

在上面例子后面添加:

 funWithReturn() {
 11         echo "这个函数功能是得到两个数字的和"
 12         echo -n "请输入第一个数字"
 13         read aNum;
 14         echo -n "请输入第二个数字"
 15         read bNum;
 16         echo "这两个数分别是 $aNum$bNum !"
 17   return $(($aNum+$bNum))
 18 } 
 19 
 20 #调用funWithReturn这个函数
 21 funWithReturn
 22 
 23 ret=$?
 24 echo "The sun of two numbers is $ret !"

运行结果:

root@iZ28t5k4ny4Z:/usr/xiho/shell# ./06.sh 
My name is xu hao
这个函数功能是得到两个数字的和
请输入第一个数字56
请输入第二个数字23
这两个数分别是 5623 !
The sun of two numbers is 79 !

$?最后运行的命令的结束代码(返回值),这个在后面会总结的。


函数参数

在shell 中,调用函数时可以向其传递参数,在函数体内部,通过$n 的形式来获取参数,比如,$1表示第一个参数,$2表示第二个参数

再来看一个带参数的函数例子:

 28 funWithParam() {
 29         echo "第一个param为 $1"
 30         echo "第二个param为 $2"
 31         echo "第十个param为 $10"
 32         echo "第十个param为 ${10}"
 33         echo "参数总共有 $#"
 34         echo "作为一个字符串输出所有参数 $* !"
 35 
 36 }
 37 #调用函数并传递参数
 38 funWithParam 1 2 3 4 5 6 23 45 22 9 25

运行脚本输出的结果为:

这里写图片描述

 在这里注意下,$ 10不能获取第10个参数,当n>=10时,需要${n}来获取参数。

另外:在补充几个特殊字符来处理的参数

$# 传递到脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数
$$    脚本运行的当前进程ID$! 后台运行的最后一个进程的ID$@$*相同,但是使用时加引号,并在引号中返回每个参数。
$- 显示Shell使用的当前选项,与set命令功能相同。
$? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。

一下午整理这两篇博客,算是把Linux shell 脚本的基础的理论学习讲完了,更多的细节只有等我们遇到了在慢慢琢磨吧!吃饭~


更多相关系列文章传送门:

【CSDN】Linux Shell脚本基础学习系列

【Linux 系统编程】shell 脚本基础学习(一)
【Linux 系统编程】shell 命令和流程控制(二)
【Linux 系统编程】shell 流程控制loop和引号(三)
【Linux 系统编程】shell 输入/输出重定向及HereDocument(四)
【Linux 系统编程】shell 脚本基础学习之函数(五)

本文由博主辛苦整理下来的笔记;
希望大家能够指点或提出宝贵意见,共同学习,谢谢!
转载请注明出处:http://blog.csdn.net/u011974987/article/details/52718164
欢迎关注我的社交网站~
个人博客:xuhaoblog.com
新浪微博:http://weibo.com/xuxiho
GitHub:https://github.com/git-xuhao

© 著作权归作者所有

徐昊

徐昊

粉丝 0
博文 84
码字总数 174446
作品 2
杨浦
Android工程师
私信 提问
嵌入式Linux学习基础规划篇

嵌入式的学习是需要日积月累的,是通过一点一滴的积累才能成为大神。下面来介绍一下嵌入式linux学习基础规划,目标是达到适应嵌入式应用软件开发、嵌入式系统开发或嵌入式驱动开发的基本素质...

创客学院
2018/04/10
0
0
Shell编程基础 shell的结构、执行及变量

12月27日任务 20.1 shell脚本介绍 20.2 shell脚本结构和执行 20.3 date命令用法 20.4 shell脚本中的变量 shell脚本介绍 shell是一种脚本语言,是一名运维工程师所必需掌握的最基本的能力。通...

robertt15
2018/12/27
55
0
详细介绍Linux shell脚本基础学习(一)

Linux shell脚本基础学习这里我们先来第一讲,介绍shell的语法基础,开头、注释、变量和 环境变量,向大家做一个基础的介绍,虽然不涉及具体东西,但是打好基础是以后学习轻松地前提。 1. L...

魏邪乎
2014/02/13
34
0
Linux究竟要学习哪些东西?

很多人想学习Linux,寻找linux基础学习线路,但是不知道从哪里着手。这里我为大家准备了Linux基础需要学习的一些东西,供大家借鉴使用,详细请参考下面给出的9点建议。Linux程序工程师非常吃...

小杰java
2017/10/23
35
0
开始你的bash/shell脚本编程

原文链接🔗 对于我自己来说,学习新框架或技术的最佳方式是同时获得实践经验,在本文中,你将自己通过编写代码来学习shell脚本的基础知识!本文包含语法,shell脚本的基础知识到中级shell...

shellhub
2018/07/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

互联网公司为啥不使用mysql分区表?(一分钟系列)

缘起:有个朋友问我分区表在58的应用,我回答不出来,在我印象中,百度、58都没有听说有分区表相关的应用,业内进行一些技术交流的时候也更多的是自己分库分表,而不是使用分区表。于是去网上...

小海bug
30分钟前
8
0
Dev GridView显示筛选框

列表上方的筛选框,可根据任意列进行数据筛选 设置:GridView属性showAutoFilterRow为true

_Somuns
34分钟前
6
0
DevExpress WPF v19.2图表图形控件功能增强?速速种草

通过DevExpress WPF Controls,你能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件的衍伸产品,还是...

FILA6666
37分钟前
5
0
鹿班|一人设计10亿图片,这个“设计师”如何演进?

本文内容提炼: 1、如何建立图片数据与用户注意力之间的连接? 2、如何进行结构化规模化的图片生产? 2019 年双十一期间,鹿班面向集团电商场景输送了 10亿 规模的图片。从提升公域流量效率,...

阿里云官方博客
39分钟前
7
0
argo注册教程和攻略,argo共识币介绍注册帮助

ARGO移动云矿一家专注于加密的公司。Argo本周在伦敦证券交易所上市,融资2500万英镑(约3200万美元),总估值约6100万美元。 从历史上来看,整个行业的超级神话。 目前Argo公司已经在加拿大第...

区块链知识分享
39分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部