在这章往后的学习中,我讲尽可能详细的讲书中讲到的都记录到这里,以便以后方便查看。

什么是函数,函数就是一段代码,这段代码可以在我们需要的位置调用,那么这段代码就叫做函数。

在Shell中,定义一个函数有两种方法。

1. 使用关键字 function

function name

{

}

#!/bin/bash

function func1
{
echo " this is a function" } count=1
while [ $count -le 5 ]
do
func1
count=$[$count +1 ]
done
echo " the loop end"

这种方式有种Shell 的感觉,那么第二种就有一种我们普通常见的函数的感觉了

name()

{

}

#!/bin/bash

function func1
{
echo " this is a function" }
func2()
{
echo " this is the function two"
} count=1
while [ $count -le 5 ]
do
func1
func2
count=$[$count +1 ]
done
echo " the loop end"

这里在定义函数的时候要注意,如果我们在定义函数前使用了函数。那么就会提示我们找不到这个命令了

#!/bin/bash

function func1
{
echo " this is a function" } count=1
while [ $count -le 5 ]
do
func1
func2
count=$[$count +1 ]
done
func2()
{
echo " this is the function two"
}
echo " the loop end"

如果是这样的话,那么func2就会报错了

#!/bin/bash

function func1
{
echo " this is a function" } func1()
{
echo " this is the recover function"
} count=1
while [ $count -le 5 ]
do
func1
count=$[$count +1 ]
done
echo " the loop end"


这样,我们的函数1就会被覆盖,所在Shell脚本中定义函数的时候一定要注意名字的唯一性

和我们普通编程一样,Shell脚本中的函数也可以有返回值,bash shell会把函数当做一个小型的脚本,运行结束时会返回一个退出状态码。有三种不同的方法可以来为函数生成退出状态码

1. 使用默认的退出状态码

默认的状态码是函数中最后一条命令返回的退出状态码。在函数结束后,使用标准的$?变量来决定函数的退出状态码

#!/bin/bash

function func1
{
echo " this is a function" } func1()
{
echo " this is the recover function"
} count=1
while [ $count -le 5 ]
do
func1
echo " the function exit status is: " $?
count=$[$count +1 ]
done
echo " the loop end"

2. 使用return来返回

#!/bin/bash

function func1
{
value=88
echo " this is a function"
return $value
} :<<!
func1()
{
echo " this is the recover function"
}
! count=1
while [ $count -le 5 ]
do
func1
echo " the function exit status is: " $?
count=$[$count +1 ]
done
echo " the loop end"


不过这个的不好支持就在于这里返回的状态码只能是0-255

要向返自己的内容,就需要用到第三种方式

文本输出 echo

这里就不哔哔了,今天先到这。等有时间在看

后面是在函数中使用变量了

Linux-Shell脚本编程-学习-8-函数的更多相关文章

  1. Linux Shell脚本编程学习笔记和实战

    http://www.1987.name/141.html shell基础 终端打印.算术运算.经常使用变量 Linux下搜索指定文件夹下特定字符串并高亮显示匹配关键词 从键盘或文件里获取标准输入 [ ...

  2. Linux shell脚本基础学习详细介绍(完整版)二

    详细介绍Linux shell脚本基础学习(五) Linux shell脚本基础前面我们在介绍Linux shell脚本的控制流程时,还有一部分内容没讲就是有关here document的内容这里继续 ...

  3. Linux shell脚本基础学习详细介绍(完整版)一

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

  4. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  5. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  6. 详细介绍Linux shell脚本基础学习

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

  7. Shell脚本编程学习入门 02

    Shell脚本编程学习入门是本文要介绍的内容,我们可以使用任意一种文字编辑器,比如gedit.kedit.emacs.vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行):   #! ...

  8. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  9. Linux Shell脚本编程--Linux特殊符号大全

    Linux Shell脚本编程--Linux特殊符号大全 linux_shell 特殊符号的介绍 2011

  10. Linux Shell脚本编程while语句

    Linux Shell脚本编程while语句案例 1,每隔3秒,打印一次系统负载 #!/bin/bash while truedo    uptime    sleep 3done 2,把监控结果保存 ...

随机推荐

  1. 显示Windows版本号

    实现效果: 知识运用: PaintDesktopVersion键 实现代码: private void button1_Click(object sender, EventArgs e) { Regi ...

  2. js控件设置只读属性和不可用属性

    介绍js实现只读的几种方法: 设置控件只读的话,我们要先清楚哪些没有readOlny这个属性 我知道的checkbox和RadioButton没有readOlny这个属性,我上一篇已经介绍了如何设置c ...

  3. mobienet, shufflenet

    参考github上各位大神的代码 mobilenet和shufflenet,实现起来感觉还是各种问题. mobilenet目前使用的代码来自这里:https://github.com/BVLC/caf ...

  4. 20.springboot项目部署到linux服务器文件上传临时路径处理问题

    1.前言 把项目部署到服务器上之后,文件上传默认会在/tmp路径中. 之前想了各种解决办法,比如如何更改这个上传路径...... 最后发现不是个好的方法,当然就想到了更好的解决方案. 就是我把上传文件 ...

  5. wubiuefi-支持新版本ubuntu的wubi

    由于某些原因,ubuntu官方不再提供新版的wubi 这就使得部分想快速且安全尝试新版ubuntu的用户望而却步 最近在外文网站找到了wubi的新版本wubiuefi,支持最新版的ubuntu 目前支 ...

  6. iOS之网络请求及各类错误代码含义总结(包含AFN错误码大全)

    转自http://blog.csdn.net/wangyanchang21/article/details/50932191 在很多时候都会遇到错误, 还会带有一些 Error Code , 比如在各 ...

  7. Vue--- 使用vuex使用流程 1.0

    Vuex 1.安装vuex npm install  -save vuex 2. 引入 创建store文件夹目录 创建 vuex     指挥公共目录    store['state','action ...

  8. flexible.js在华某为手机上使用rem时,页面宽度超出手机屏幕宽度

    问题:手机端项目在华为的某款手机上显示时页面内容没有自适应手机宽度,出现横向滚动条 原因:手机获取手机屏幕宽度并计算出rem时出现偏差,明显宽余真实手机屏宽度 解决方案一:在页面里获取页面最外层dom ...

  9. C++继承和派生练习(一)--关于vehicle基类

    Target:定义一个车(vehicle)基类 具有MaxSpeed.Weight等成员变量,Run.Stop等成员函数,由此派生出自行车(bicycle)类.汽车(motorcar)类. 自行车(b ...

  10. mysql 如何监控innodb的阻塞