linux学习之shell脚本 ------- shell函数

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020]

  今天来看一下Shell的函数。

Shell函数

  函数定义

   shell允许将一组命令集或语句形成一个可用块,这些块称为Shell函数。

   函数定义格式:

    函数名(){

    命令1

     ……

                 }

   或

    function 函数名(){

     ……

    }

   函数可以放在同一个文件中作为一段代码,也可以放在只包含函数的单独文件中。

   如下面的脚本就是一个只包含函数的单独文件。

#!/bin/bash
#fun_test
function hello(){
   echo "Hello,today is `date`"
return 1
}

   既然定义的函数,那么如何调用该函数呢,下面,我们接着看函数调用。

  函数调用

   以上面定义的函数为例,调用方式如下:

#!/bin/bash
#fun_test
function hello(){
   echo "Hello,today is `date`"
return 1
}
echo "now going the function hello"
hello
echo "back from the function"

   可以看出,其实和其他语言一样,在主程序中直接用函数名,就可以调用定义好的函数了,我们看下,该脚本的执行结果:

[email protected]:~/develop/worksapce/shell_workspace$ chmod a+rx fun_test.sh
[email protected]:~/develop/worksapce/shell_workspace$ ./fun_test.sh
now going the function hello
Hello,today is 2015年 02月 01日 星期日 20:22:36 CST
back from the function

  参数传递

   向函数传递参数就像是在脚本中使用位置变量一样,$1,...,$9

   我们修改上面的例子:

#!/bin/bash
#fun_test
function hello(){
   echo "Hello,$1 today is `date`"
return 1
}
echo "now going the function hello"
hello jesson
echo "back from the function"

   这里,是以位置变量使用参数,执行如下:

[email protected]:~/develop/worksapce/shell_workspace$ ./fun_test.sh
now going the function hello
Hello,jesson today is 2015年 02月 01日 星期日 20:28:38 CST
back from the function

  函数文件

   在上面函数定义里也提到了,函数可以单独作为一个文件,那这个文件即称为函数文件,那么就有一个问题了,上面的例子,都是在同一个文件内,也就是函数与函数的调用都在同一个主程序中,那么对于函数文件,该如何调用呢。

   还是一样,我们以例子来说明,先定义一个函数文件,修改上个脚本为函数文件,如下

fun_test.sh

#!/bin/bash
#fun_test
function hello(){
   echo "Hello,$1 today is `date`"
return 1
}

   这里,我们定义了函数文件,我们现在要在另一个脚本里调用该函数文件,该如何做呢????

funfilecall.sh

 #!/bin/bash
#funfilecall
#Source function
. fun_test.sh
echo "now going to the function hello"
hello jesson
echo "back from the function"

   可以看出,对于函数文件的调用,只需要两步就可实现,第一步就是在调用函数前,先申明函数文件,方法( . 函数文件名),这里要注意,.与函数文件名之间要有空格。接下下,就可以直接调用函数文件里定义的函数了,与之前在同一个文件中调用函数一样。该脚本执行结果如下:

[email protected]:~/develop/worksapce/shell_workspace$ ./funfilecall.sh
now going to the function hello
Hello,jesson today is 2015年 02月 01日 星期日 20:37:55 CST
back from the function

  检查载入函数和删除函数

   查看载入函数:

     set

   删除函数

    unset

   我们修改上面的脚本如下:

#!/bin/bash
#funfilecall
#Source function
. fun_test.sh
set
unset hello
echo "now going to the function hello"
hello jesson
echo "back from the function"

   执行结果如下:

......
now going to the function hello
./funfilecall.sh: 行 8: hello: 未找到命令
back from the function

   可以,在脚本中有unset hello,这句的意思是将hello删除,也就是不载入,所以执行结果中才会提示,hello:未找到命令。

   另外,$?可以取得一个命令的返回值,一般情况,当命令执行成功时,返回0,执行不成功时返回非0整数。对于函数也类似,可以通过$?取得函数的返回值。

时间: 2024-08-01 03:47:07

linux学习之shell脚本 ------- shell函数的相关文章

Linux学习记录(四):Shell脚本

目录 Shell脚本是什么 如何运行Shell脚本 Shell脚本的一些简单语法 Shell脚本 Shell脚本(Shell script),是一种为shell编写的脚本程序.我们所说的shell通常是指shell脚本. 在终端中输入很多命令,我们想把这些命令写到一个文件中去,这时Shell就派上用场了. 如何运行Shell脚本 现有test.sh脚本如下: #!/bin/bash echo "Hello World" 方法一: 方法二: sh test.sh拓展名为sh,那么用sh解

Linux学习第九节课-shell脚本编程

Linux第九节课 -------------------------------------------------------------------------------------------------------------------------------- 程序:算法+数据结构 数据:程序的核心 算法:处理数据的方式 程序编程风格 过程式:以指令为中心,数据服务于指令 对象式:以数据为中心,指令服务于数据 高级编程语言 编译:高级语言→编译器→机器代码→执行,例如c,c++等

Linux中的shell脚本编程——函数

概述: 本章节将总结while,for循环语句的特殊用法,在不同的场景当中,更能发挥其功能和价值.除此之外,还会介绍一种特殊的循环语句select语句,实现菜单的作用.最重要的是讲解shell脚本编程中函数的用法.这些内容都要熟练掌握. 一.循环语句的特殊用法: 1.while循环的特殊用法(遍历文件的每一行): □语法:while read line; do 循环体 done < /PATH/FROM/SOMEFILE □意义:依次读取/PATH/FROM/SOMEFILE文件中的每一行,且将

linux学习笔记四(shell编程)

前言:最近在学习shell编程,shell编程是一个很强大的编程语言. 目的:方便今后复习. 内容:1.简单的回顾一下编程语言                 1)编程语言:机器语言,汇编语言,高级语言.                 2)编程语言有静态和动态的区分.                             区别:静态语言是一种编译性的语言,要提前知道变量的格式,进过完整的编译之后才能运行,典型的静态语言包括:C.C++.JAVA.C#.                    

Linux学习之二十一-shell编程基础

Shell编程基础 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言.Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务.Shell 脚本(shell script),是一种为 shell 编写的脚本程序 Shell 编程跟 java.php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了 Linux中的shell种类(shell解释器的种类

shell脚本的函数介绍和使用案例

#前言:今天我们来聊聊shell脚本中的函数知识,看一下函数的优势,执行过程和相关的使用案例,我们也来看一下shell和python的函数书写方式有什么不同 #简介 1.函数也具有别名类似的功能 2.函数是把程序里多次调用相同的代码部分定义成一份,然后给这份代码定义个名字,如果出现重复的就调用就行了 #函数的优势 1.把相同的程序段定义成函数,可以减少整个程序的代码量 2.可以让程序代码结构更清晰 3.增加程序的可读.易读性.以及管理性 4.可以实现程序功能模块化,不同的程序使用函数模块化 #语

shell脚本 4 函数与正则

shell函数 shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数.给这段代码起个名字称为函数名,后续可以直接调用该段代码. 格式 func() {   #指定函数名 command    #函数体 } 实例1: #!/bin/bash func() { echo "This is a function." } func # bash test.sh This is a function. Shell 函数很简单,函数名后跟双括号,再跟双大括号.通过函数

shell脚本之函数的定义及使用

函数Function的使用 定义函数 1) 函数名称() { ... ... } 2) function 函数名称 { ... ... } 调用函数 函数名称 也可以通过位置变量的方式给函数传递参数 例子: 编写脚本,实现目录管理功能,要求使用函数 #!/bin/bash # createDir() { read -p "Enter directory: " dir if [ -d $dir ]; then echo "目录$dir存在" else mkdir -p

Linux学习之路:shell变量(二)环境变量

1.env (environment 的缩写)和export显示所有环境变量 2. 环境变量说明 环境变量 意义 HOME 用户主文件夹相当于"~" SHELL Linux默认为/bin/bash HISTSIZE history记录的条数 MAIL mail 读取邮件的目录(每个用户不同):/var/spool/mail/root PATH 执行文件查找路径,路径之间用:分隔,查找的顺序为PATH中次序 LANG 语系数据中文:zh_CN.gb2312和zh_CN.UTF-8 RAN