Shell编程关于函数要注意的几点

今天上午一个朋友突然QQ问到,shell编程中的函数为什么return只能是整数,怎么样才能将函数的执行结果返回并保存至某个变量中。其实这个问题很好解决---只需要认真了解下shell函数即可。

shell编程中关于函数需要知道的几点

一、无论是在函数内,还是在函数外,$0的值都是该脚本本身。

    [[email protected] ~]# cat test.sh
    #!/bin/bash
    
    echo $0
    
    function testFunc(){
        echo "In function:"
        echo "\$0=$0"
        echo "\$1=$1"
    }
    
    testFunc ‘test test‘
    [[email protected] ~]# bash test.sh
    test.sh
    In function:
    $0=test.sh
    $1=test test

二、函数内定义的变量(如果不是必须要修改全局变量的话)尽量使用local关键字定义成局部变量,以免覆盖全局变量值

[[email protected] ~]# cat local.sh 
    #!/bin/bash
    
    TESTDATA="Hello world."
    TESTDATA1="Hello shell."
    
    function localFunc(){
        TESTDATA="Hello python."
        local TESTDATA1="Hello PHP."
        echo "In function:"
        echo "\$TESTDATA=$TESTDATA"
        echo "\$TESTDATA1=$TESTDATA1"
    }
    
    #call function
    localFunc
    
    echo "Out of function:"
    echo "\$TESTDATA=$TESTDATA"
    echo "\$TESTDATA1=$TESTDATA1"
    [[email protected] ~]# bash local.sh 
    In function:
    $TESTDATA=Hello python.
    $TESTDATA1=Hello PHP.
    Out of function:
    $TESTDATA=Hello python.
    $TESTDATA1=Hello shell.

三、函数内使用return 关键字返回一个0-255的值,表示该函数退出状态码(即该函数是否执行成功),0表示执行成功,非0表示失败。在日常工作中,可以根据条件使函数返回是否执行成功,供其他程序做判断使用。若需要函数返回一个结果值,并存储到一个变量中,要使用echo语句。

    [[email protected] ~]# cat return.sh 
    #!/bin/bash
    
    function returnFunc(){
        echo "value"
        return 247
    }
    
    DATA=$(returnFunc)
    echo "\$?=$?"
    echo "\$DATA=$DATA"
    [[email protected] ~]# bash return.sh 
    $?=247
    $DATA=value

四、如果有多个shell脚本,一个脚本需要调用另外一个脚本里的函数,需要执行以下命令,将指定的脚本文件载入:

. ./func.sh

或者

source ./func.sh

上边的操作类似于其他语言的include操作。

 [[email protected] ~]# cat func.sh 
    #!/bin/bash
    
    function func1(){
        echo "This is func1"
    }
    
    function func2(){
        echo "This is func2"
    }
    
    function func3(){
        echo "This is func3"
    }
    [[email protected] ~]# cat call.sh 
    #!/bin/bash
    
    #source ./func.sh
    . ./func.sh
    
    func1
    func2
    func3
    [[email protected] ~]# bash call.sh
    This is func1
    This is func2
    This is func3
时间: 2024-10-21 00:44:56

Shell编程关于函数要注意的几点的相关文章

shell编程之函数

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

Linux Shell编程之三函数

函数是什么呢?我们为什么有使用函数呢? 一.函数的相关知识 函数就是就具有某种特定功能的代码打包起来,提供一个接口以供使用.这样做的好处是:一方面可以实现代码复用,例如:许多面向对象的语言,像Java提供的许多类和方法(函数)一样:另一方面是为了代码的模块化编程,这样可以实现多人同时开发代码. 在 shell 中函数主要的作用是实现代码复用,当然利用函数比编写代码可以是代码更简洁,易读. shell中如何定义函数? 语法格式: function F_NAME { 函数体 } 或者 F_NAME(

shell 编程之函数

shell 函数的定义和普通的c语言函数定义差不多 function(){ } shell 函数的返回值,可以显示的return 语句,如果没有return  那么就会把最后一条语句的执行结果作为返回值 shell 函数的返回值只能是整数 例子: hello () { echo "you select hello" } hello shell   函数的调用不用加() 函数返回值的例子: hello () { return  3 } hello ret=$? echo $ret 函数嵌

linux——shell编程之函数和循环控制

函数:实现独立功能的代码段 函数只有在调用时才会执行 语法一: function F_NAME{ 函数体 } 语法二: F_NAME() { 函数体 } 函数的返回值: 默认函数返回值:函数执行状态返回值,默认是脚本中最后一条命令执行的状态值,没有实际用途 自定义函数返回值:return [0-255] 0:成功 非0:失败 函数示例 循环控制: continue:提前结束本轮循环,直接进入并开始下一次循环. 比如代码会循环五次后,执行完成.在第三次循环中出发了continue则直接跳出第三次循

京峰Linux Shell编程从入门到精通

课程介绍:Shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口.它接收用户输入的命令并把它送入内核去执行. -------------------课程目录------------------- <Shell编程从入门到精通> ├1.linux下shell编程基础入门_(new).mp4├2.Shell编程之变量及LAMP导航菜单编写_(new).mp4├3.Shell编程之IF条件语句各种案例演练_(new).mp4├4.使用if条件语句编写MySQL备份脚本_(new).mp4

shell编程值之函数和select的使用

select   select循环主要用于创建菜单,按数字顺序排列的菜单项将显示在标准错误上,并显示PS3提示符,等待用户的输入,用户输入菜单列表中的某个数字,执行相应的命令,用户输入被保存在变量REPLY中. select是个无限循环,因此要记住用break命令退出循环,或者用exit直接退出脚本,也可以使用ctrl+c退出循环 select语句结构: select 变量 in 选项1 选项2 ;do break done #!/bin/sh PS3="what is you favourit

shell编程(十五)--- while特殊用法和函数

break:退出循环体 continue:结束本次循环,进入下一次循环. while特殊用法1: while : do done 上述为while的死循环. while特殊用法2: while read LINE do done < /path/to/FILE 作用:通过while读取FILE文件中的每一行,并将其保存在变量LINE中. 函数:function 语法格式: 方法1: function FUNCTIONNAME {     COMMAND } 方法2: FUNCTIONNAME()

shell编程continue break 函数的return

跳出循环和函数返回值 一.退出循环 在shell编程中,通常退出循环有两种方法: contine:是结束本次执行的循环,默认是contine 1,当contine 3 时,则表示进入第3层循环: break:是跳出本次循环,默认是break 1, 当break 2 时,则表示退出第二层循环,进入第3层循环: 因此在循环中:contine n = break n-1 [[email protected] ~/test]#vim for.sh #!/bin/bash for i in {1..3};

(三)Linux Shell编程——Shell常用命令(输出、判断、循环、函数、包含)

3. 常用命令 3.1 输出 3.1.1 echo命令 echo是Shell的一个内部指令,用于在屏幕上打印出指定的字符串.命令格式: echo arg name="coding" echo '$name\"'+" ${name}" #原样输出 $name\"+ coding echo `date` #当前日期 3.1.2 printf命令 printf 命令用于格式化输出, 是echo命令的增强版.它是C语言printf()库函数的一个有限的变