Linux学习-高级shell脚本编程(一)函数

引文: 通常编写shell脚本时,你会发现很多地方都要用到相同的代码或者说是相同的功能。如果是一段小代码,那无所谓。可如果多次使用而且还是相同的代码,我想你也会感觉很烦的。为了能够让代码重用,这就使用到函数了。

温馨提示

变量赋值的格式为:

变量名=变量值

注意事项:

  • 变量名前面不应加美元“$”符号。(和PHP不同)等号“=”
  • 前后不可以有空格。和C语言不同,Shell中不需要显式的语法来声明变量。
  • 变量名不可以直接和其他字符相连,如果想相连,必须用括号:echo “this is $(he)llo!”

函数定义格式

function name {
    commands
}

或者是

name() {
}

这个就和其他的语言有点类似了。


实例1.无参函数

一个简单的使用函数功能的shell脚本

test1.sh

#!/bin/bash
# this is a test file for test function

function func1 {
        echo "this is an example of function!"
}

count=1
echo "count‘s value is $count."
while [ $count -le 5 ]
do
        func1
        count = $[ $count + 1 ]
done

echo "end of while."

运行:

sh test1.sh

输出:

count’s value is 1.

this is an example of function!

this is an example of function!

this is an example of function!

this is an example of function!

this is an example of function!

end of while.


实例2.带参函数

test2.sh

#!/bin/bash
# this is a test file for test function

function addem {
        if [ $# -eq 0 ] || [ $# -gt 2 ]
        then
                echo -1
        elif [ $# -eq 1 ]
        then
                echo $[ $1 + $1]
        else
                echo $[ $1 + $2 ]
        fi
}

echo -n "Adding 10 and 5:"
value=`addem 10 15`
echo $value
echo -n "Let‘s try adding just one number:"
value=`addem 10`
echo $value
echo -n "Now trying adding no number:"
value=`addem`
echo $value
echo -n "Finally,we try adding three numbers:"
value=`addem 10 15 20`
echo $value
echo "end of file."

测试:

sh test2.sh

输出:

Adding 10 and 5:25

Let’s try adding just one number:20

Now trying adding no number:-1

Finally,we try adding three numbers:-1

end of file.

如果想在函数内部声明一个变量,可以使用local来定义,表示为局部变量。如local temp=1


实例3.数组参数

test3.sh

#!/bin/bash
# trying to pass a array variable

function testit {
        local newarray   # use ‘local’ define a local variable
        newarray=(`echo "[email protected]"`)
        echo "the newarray value is ${newarray[*]}"
}

myarray=(1,2,3,4,5)
echo "the original array is:${myarray[*]}"
testit $myarray

测试:

sh test3.sh

输出:

the original array is:1,2,3,4,5

the newarray value is 1,2,3,4,5


实例4.函数递归

定义阶乘函数x! = x * (x-1)

function factorial {
    if [ $1 -eq 1 ]
    then
        echo 1
    else
        local temp=$[ $1 - 1 ]
        local result=`factorial $temp`
        echo $[$result * $1]
    fi
}

详细实例:test4.py

#!/bin/bash
# using recursion

function factorial {
        if [ $1 -eq 1 ]
        then
                echo 1
        else
                local temp=$[ $1 - 1 ]
                local result=`factorial $temp`
                echo $[ $result * $1 ]
        fi
}

测试:

sh test4.py

输出:

Enter value:6

The factorial of 6 is: 720


实例5.命令行上使用函数命令

[root@master chapter16]# function multm {
> echo $[ $1 * $2 ]
> }
[root@master chapter16]# multm 2 5
10

注意: 在命令行上定义函数时,如果你给函数起的名字跟内建命令or另一个命令相同名字,则函数将覆盖原来的命令。

如果想要开机生效,可以把函数卸载/etc/.bashrc文件中。

时间: 2024-11-10 14:48:55

Linux学习-高级shell脚本编程(一)函数的相关文章

linux学习笔记:shell脚本编程相关(上)

前言 unix/linux操作系统下的shell,是一种壳,其目的是提供一个用户与计算机相互交互的命令接口,通过输入各种命令,达到操作的目的. 与此同时,shell支持控制流程,进而可以组合出各种各样的应用实例. shell脚本的格式 首行shebang机制: bash脚本,首行添加#!/bin/bash [options] csh脚本,首行添加#!/bin/csh [options] ksh脚本,首行添加#!/bin/ksh [options] -- 描述脚本的注释部分: 包括Author,

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

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

Linux下的shell脚本编程-变量-算术表达式-判断语句-if分支语句

Linux下的shell脚本编程-变量-算术表达式-判断语句-if分支语句 一:实验环境 1):虚拟机 2):linux系统 二:实验目标 1): shell 基本语法 2):变量 3):表达式 4):判断语句 5): if表达式 三:实验脚本 第一块 一个简单的shell脚本程序 [[email protected] ~]# mkdir test [[email protected] test]# vim example1.sh #!/bin/bash #This is to show wha

Linux中的shell脚本编程——数组 ,高级字符串操作 ,高级变量 ,配置用户环境

概述: 概述: 本章节将讲述Linux中shell脚本编程的数组,高级字符串处理,高级变量和配置用户的环境. 一.函数和位置参数扩展 1.shift 命令实现在位置参数中的跳跃,会把最左边的参数挤掉     2.匿名函数的使用 第一篇:数组 一.数组的定义: 1.变量:存储单个元素的内存空间 2.数组:存储多个元素的连续的内存空间,相当于多个变量的集合. 3.数组名和索引 索引:编号从0开始,属于数值索引 注意:索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash4.0版本之后开

linux学习19 shell脚本基础-bash脚本编程基础及配置文件

一.shell脚本编程 1.编程语言的分类,根据运行方式 a.编译运行:源代码 --> 编译器(编译) --> 程序文件 C语言: b.解释运行:源代码 --> 运行时启动解释器,由解释器边解释边运行:即源代码本身并不能运行,而是启动一个解释器的进程,把整个源代码的内容当做解释器的参数.因为其是边解释边运行因此运行过程中比起编译运行速度会差一些. c.无论是编译器还是解释器中间总需要另外一个程序,即在运行过程中全程参与,这就是我们说的翻译官,他需要将我们人能识别的代码转换成机器所能识别的

Linux中的shell脚本编程——基础篇

概述: shell脚本在Linux系统管理员的运维工作中非常重要.shell脚本能够帮助我们很方便的管理服务器,因为我们可以指定一个任务计划,定时的去执行某一个脚本以满足我们的需求.本篇将从编程基础.脚本基本格式.变量.运算.条件测试这几个方面详细介绍shell脚本编程的基础内容,也是我们必须要掌握熟练的内容. 一.编程环境 1.程序:指令+数据 程序编程的风格有两种: 过程式:以指令为中心,数据服务与指令 对象式:以数据为中心,指令服务于数据 2.程序的执行方式: □计算机:只能识别二进制文件

linux学习之shell脚本 ------- 输入与输出

[本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020] 前面介绍了Shell脚本的基础和运算符等,今天再来看一下关于Shell脚本的输入与输出. Shell输入与输出的一些命令: echo read cat 管道 tee exec Shell输入与输出的一些概念: 文件重定向 标准输入.输出和错误 合并标准输出和标准错误 使用文件描述符 下面,我们挨个看每个命令的用法: 输入输出命令的用法: 1. echo 该命令的作用是可以显

shell脚本编程之函数

函数:function 过程式编程:代码重用 模块化编程 结构化编程 把一段独立功能的代码当作一个整体,并为之一个名字:命名的代码段,此即为函数: 注意:定义函数的代码段不会自动执行,在调用时执行:所谓调用函数,在代码中给定函数名即可: 函数名出现的任何位置,在代码执行时,都会被自动替换为函数代码: 语法一: function  f_name  { ...函数体... } 语法二: f_name()  { ...函数体... } 函数的生命周期:每次被调用时创建,返回时终止: 其状态返回结果为函

Linux学习日记—shell脚本基础

在Linux的日常维护中,shell脚本是我们必不可少的日常管理之一:其作用是解决服务器的自动化维护工作,减轻管理员的工作量:如果想提高shell脚本的编写速度,必须要熟练使用vi编辑器的各种快捷键. [什么是shell]    Shell Script,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的.但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,毕竟它使