精华内容
下载资源
问答
  • Linux Shell 函数

    2019-05-08 21:59:30
    Shell编程有系统函数,也可以自定义函数。 系统函数 basename 指令 功能:返回完整路径最后 / 的部分,常用于获取文件名 如,/home/文档/demo.txt 可获取demo.txt 基本语法: basename [pathname] [suffix] ...

    Shell编程有系统函数,也可以自定义函数。

    系统函数 

    basename  指令

    功能:返回完整路径最后 / 的部分,常用于获取文件名  如,/home/文档/demo.txt  可获取demo.txt

    基本语法:

    basename [pathname] [suffix]

    basename [string] [suffix]

    (功能描述:basename命令会删掉所有的前缀包括最后一个(‘/’) 字符,然后将字符串显示出来。

    选项: suffix为后缀,如果suffix被指定了,basename会将pathnamestring中的suffix去掉。

     dirname 指令

    功能与basename正好相反,如果basename是获取文件名,则dirname 用于获取目录。

     

    自定义函数 

     

    基本语法

    function  funname(){

    Action;

    [return int;]

    }

    funname []

    直接看不好看直接上代码

    补充 $? 代表最后程序的返回值。

    展开全文
  • Linux Shell 函数返回值

    千次阅读 2017-01-09 21:11:57
    Shell函数返回值,常用的两种方式:...shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回。 示例:#!/bin/sh function test() { echo "arg1 = $1" if [ $1 = "1" ] ;then return 1 els

    Shell函数返回值,常用的两种方式:return,echo
    1) return 语句
    shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回。
    示例:

    #!/bin/sh  
    function test()  
    {  
        echo "arg1 = $1"  
        if [ $1 = "1" ] ;then  
            return 1  
        else  
            return 0  
        fi  
    }  
    
    echo   
    echo "test 1"  
    test 1  
    echo $?         # print return result  
    
    echo   
    echo "test 0"  
    test 0  
    echo $?         # print return result  
    
    echo   
    echo "test 2"  
    test 2  
    echo $?         # print return result  
    
    
    

    输出结果为:

    test 1
    arg1 = 1
    1

    test 0
    arg1 = 0
    0

    test 2
    arg1 = 2
    0

    先定义了一个函数test,根据它输入的参数是否为1来return 1或者return 0。
    获取函数的返回值通过调用函数,或者最后执行的值获得。
    另外,可以直接用函数的返回值用作if的判断。
    注意:return只能用来返回整数值,且和c的区别是返回为正确,其他的值为错误。

    2) echo 返回值

    其实在shell中,函数的返回值有一个非常安全的返回方式,即通过输出到标准输出返回。因为子进程会继承父进程的标准输出,因此,子进程的输出也就直接反应到父进程。

    示例:

    #!/bin/sh  
    function test()  
    {  
        echo "arg1 = $1"  
        if [ $1 = "1" ] ;then  
            echo "1"  
        else  
            echo "0"  
        fi  
    }  
    
    echo   
    echo "test 1"  
    test 1  
    
    
    echo   
    echo "test 0"  
    test 0  
    
    
    echo   
    echo "test 2"  
    test 2  

    结果:

    test 1
    arg1 = 1
    1

    test 0
    arg1 = 0
    0

    test 2
    arg1 = 2
    0

    这两个函数几乎没什么区别,对,它几乎就是return和echo不一样,但是有一点一定要注意,不能向标准输出一些不是结果的东西(也就是说,不能随便echo一些不需要的信息),比如调试信息,这些信息可以重定向到一个文件中解决,特别要注意的是,脚本中用到其它类似grep这样的命令的时候,一定要记得1>/dev/null 2>&1来空这些输出信息输出到空设备,避免这些命令的输出。

    展开全文
  • Linux Shell函数返回值

    万次阅读 2012-09-07 13:03:16
    Shell函数返回值,一般有3种方式:return,argv,echo1) return 语句shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回。示例:#!/bin/bash - function mytest() { echo "arg1 = $1" if [ $1 =...

    Shell函数返回值,一般有3种方式:returnargvecho


    1) return 语句
    shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回。
    示例:

    #!/bin/bash -
    function mytest()
    {
        echo "arg1 = $1"
        if [ $1 = "1" ] ;then
            return 1
        else
            return 0
        fi
    }
    
    echo 
    echo "mytest 1"
    mytest 1
    echo $?         # print return result
    
    echo 
    echo "mytest 0"
    mytest 0
    echo $?         # print return result
    
    echo 
    echo "mytest 2"
    mytest 2
    echo $?         # print return result
    
    
    echo
    echo "mytest 1 = "`mytest 1`
    if  mytest 1 ; then
        echo "mytest 1"
    fi
    
    echo
    echo "mytest 0 = "`mytest 0`
    if  mytest 0 ; then
        echo "mytest 0"
    fi
    
    echo
    echo "if fasle" # if 0 is error
    if false; then
        echo "mytest 0"
    fi
    
    
    echo
    mytest 1
    res=`echo $?`   # get return result
    if [ $res = "1" ]; then
        echo "mytest 1"
    fi
    
    echo
    mytest 0
    res=`echo $?`   # get return result
    if [ $res = "0" ]; then
        echo "mytest 0"
    fi
    
    
    
    echo 
    echo "end"

    结果:

    mytest 1
    arg1 = 1
    1

    mytest 0
    arg1 = 0
    0

    mytest 2
    arg1 = 2
    0

    mytest 1 = arg1 = 1
    arg1 = 1

    mytest 0 = arg1 = 0
    arg1 = 0
    mytest 0

    if fasle

    arg1 = 1
    mytest 1

    arg1 = 0
    mytest 0

    end

    先定义了一个函数mytest,根据它输入的参数是否为1来return 1或者return 0.
    获取函数的返回值通过调用函数,或者最后执行的值获得。
    另外,可以直接用函数的返回值用作if的判断。
    注意:return只能用来返回整数值,且和c的区别是返回为正确,其他的值为错误。


    2) argv全局变量

    这种就类似于C语言中的全局变量(或环境变量)。

    示例:

    #!/bin/bash -
    
    g_var=
    function mytest2()
    {
        echo "mytest2"
        echo "args $1"
        g_var=$1
    
        return 0
    }
    
    mytest2 1
    echo "return $?"
    
    echo
    echo "g_var=$g_var"

    结果:

    mytest2
    args 1
    return 0

    g_var=1


    函数mytest2通过修改全局变量的值,来返回结果。


    注: 以上两个方法失效的时候

    以上介绍的这两种方法在一般情况下都是好使的,但也有例外。
    示例:
    #!/bin/bash -
    
    
    function mytest3()
    {
        grep "123" test.txt | awk -F: '{print $2}' | while read line ;do
            echo "$line"
            if [ $line = "yxb" ]; then
                return 0    # return to pipe only
            fi
        done
    
        echo "mytest3 here "
        return 1            # return to main process
    }
    
    g_var=
    function mytest4()
    {
        grep "123" test.txt | awk -F: '{print $2}' | while read line ;do
            echo "$line"
            if [ $line = "yxb" ]; then
                g_var=0
                echo "g_var=0"
                return 0    # return to pipe only
            fi
        done
    
        echo "mytest4 here "
        return 1
    }
    
    mytest3
    echo $?
    
    echo
    mytest4
    echo $?
    
    echo
    echo "g_var=$g_var"

    其中,test.txt 文件中的内容如下:

    456:kkk
    123:yxb
    123:test

    结果:

    yxb
    mytest3 here 
    1

    yxb
    g_var=0
    mytest4 here 
    1

    g_var=
    可以看到mytest3在return了以后其实没有直接返回,而是执行了循环体后的语句,同时看到mytest4中也是一样,同时,在mytest4中,对全局变量的修改也无济于事,全局变量的值根本就没有改变。这个是什么原因那?
    笔者认为,之所以return语句没有直接返回,是因为return语句是在管道中执行的,管道其实是另一个子进程,而return只是从子进程中返回而已,只是while语句结束了。而函数体之后的语句会继续执行。
    同理, 全局变量在子进程中进行了修改,但是子进程的修改没有办法反应到父进程中,全局变量只是作为一个环境变量传入子进程,子进程修改自己的环境变量,不会影响到父进程。
    因此在写shell函数的时候,用到管道(cmd &后台进程也一样)的时候一定要清楚此刻是从什么地方返回。


    3) echo 返回值

    其实在shell中,函数的返回值有一个非常安全的返回方式,即通过输出到标准输出返回。因为子进程会继承父进程的标准输出,因此,子进程的输出也就直接反应到父进程。因此不存在上面提到的由于管道导致返回值失效的情况。
    在外边只需要获取函数的返回值即可。

    示例:

    #!/bin/bash 
    
    ##############################################
    # Author : IT-Homer
    # Date   : 2012-09-06 
    # Blog   : http://blog.csdn.net/sunboy_2050
    ##############################################
    
    function mytest5()
    {
        grep "123" test.txt | awk -F: '{print $2}' | while read line; do
            if [ $line = "yxb" ]; then
                echo "0"    # value returned first by this function
                return 0
            fi
        done
    
        return 1
    }
    
    echo '$? = '"$?"
    result=$(mytest5)
    
    echo "result = $result"
    
    echo
    if [ -z $result ]       # string is null
    then
        echo "no yxb. result is empyt"
    else
        echo "have yxb, result is $result"
    fi
    结果:
    $? = 0
    result = 0

    have yxb, result is 0

    这个方式虽然好使,但是有一点一定要注意,不能向标准输出一些不是结果的东西,比如调试信息,这些信息可以重定向到一个文件中解决,特别要注意的是,用到比如grep这样的命令的时候,一定要记得1>/dev/null 2>&1来避免这些命令的输出。



    参考推荐:

    Shell函数返回值

    Linux 之 shell 比较运算符(推荐)

    Linux Shell学习简单小结(推荐)

    SHELL学习笔记----IF条件判断,判断条件


    展开全文
  • 关于linux shell函数返回值问题#!/bin/bash # History: # 2017/6/15 chuankun first release PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH ERROR_VALUE=255 EQVALUE=249 ...

    关于linux shell函数返回值问题

    #!/bin/bash
    # History:
    # 2017/6/15 chuankun first release
    PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    export PATH
    
    
    ERROR_VALUE=255
    EQVALUE=249
    declare -i j
    declare -i i=20
    
    //比较两数大小的函数,并返回一个值。
    max_number()
    {
    if [ -z "$2" ]
    then
        return $ERROR_VALUE
    fi
    
    if [ "$1" -eq "$2" ]
    then
    
        return $EQVALUE
    else
        if [ "$1" -gt "$2" ]
        then
            return $1
        else
            return $2
        fi
    fi
    }
    
    echo -n "Input a number:"
    read j
    echo
    max_number $i $j
    return_value=$?
    if [ "$return_value" -eq $ERROR_VALUE ]//如果未输入参数
    then
        echo "Need to pass two parameters to function."
    elif [ "$return_value" -eq $EQVALUE ]  //如果两数相等
    then
        echo "The two numbers are equal."
    else                                   //输出最大值。
        echo "The larger number is $return_value."
    fi
    exit 0
    1-该函数的返回值ERROR_VALUE和EQVALUE如果改为负数的话,执行该shell就会出错,这是什么原因?
    
    2-函数的参数$1和$2在比较时,if [ "$1" -gt "$2" ],采用了双引号,这是为何,本人实验过,if [ $1 -gt $2 ],也不会报错,这是为何?
    
    展开全文
  • #Shell函数返回多个值 test(){ echo 100 #返回100 echo 200 #返回200 } a=$(test) #则得到a="100 200"  
  • 一、Shell函数定义格式 shell函数定义格式,各部分说明如下: [ function ]等中括号括起来部分----表示可选(即可有可无) your_function_name部分----为函数名 your_shell_commands部分----为函数代码;shell一般以...
  • Linux Shell函数

    千次阅读 2019-04-28 10:10:16
    下面介绍一个linux shell对函数的用法: ...shell函数必须先定义后使用。 1)shell函数的定义格式如下: function_name(){ list of commands [ return value ] } 如果你愿意,也可以在函数名前加上关键字fu...
  • 用shell计算斐波那契数列数列,写了一个shell函数,然后调用的,验证的时候我只随便计算了几个数(10以内),确认结果是正确的就提交了,后来同事找我说我的计算结果不对,拉着我现场验证(计算到45),一看结果果然...
  • shell函数返回字符串

    万次阅读 2015-04-22 10:07:40
    shell函数的返回值,仅支持return返回整数,尝试返回字符串:
  • linux shell实现从函数返回数组

    千次阅读 2018-07-13 18:25:00
    #!/bin/bash function arraydb { ... result=($(arraydb $args)) //调用函数  echo ''the newarray is:$result[*]'' //注意$result[*]显示数组   转载于:https://www.cnblogs.com/pcy226/p/9306598.html
  • linux shell函数的返回值问题

    千次阅读 2017-10-09 19:15:06
    linux shell函数返回值的问题
  • 一、定义shell函数(define function) 语法: [ function ] funname [()] { action; [return int;] } 说明: 1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。 2、参数返回,可以显示加:...
  • linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。下面说说它的定义方法,以及调用需要注意那些事项
  • Linux shell脚本之函数 Function 详解

    千次阅读 2019-07-16 23:57:50
    Linux shell脚本函数详解 函数递归 函数示例
  • Linux shell脚本编程之函数
  • 我们知道在shell函数中 $# 传递到脚本或函数的参数个数 $* 以一个单字符串显示所有向脚本传递的参数 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的ID号 $@ 与$*相同,但是使用时...
  • shell函数传参和返回

    千次阅读 2019-12-21 22:18:45
    shell函数传参和返回结果,记录几个使用注意点。
  • Linux Shell脚本编程--函数返回值

    万次阅读 2013-07-14 16:39:44
    Linux Shell返回值,Shell函数返回值,常用的两种方式:return,echo 1) return 语句 shell函数的返回值,可以和其他语言的返回值一样,通过return语句返回。 示例:
  • Shell 函数

    千次阅读 2016-08-30 23:30:33
    语法linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。shell函数的定义格式如下:[ function ] funname [()]{ action; [return int;]}说明: 1、可以带function fun() 定义,也可以直接fun() 定义,...
  • shell 函数返回字符串

    千次阅读 2016-06-24 15:01:50
    foo () { a=qqq echo $a } echo "$(foo)" [root@localhost]# qqq
  • Linux shell loop 循环 函数

    千次阅读 2019-01-07 14:33:12
    循环 while true; do if [ $count -lt 40 ]; then let count++; sleep 1; tput rc tput ed echo -n ${count} ...函数 function fname() { statements; } fname() { statements; } fname() { echo $1,...
  • popen():进程I/O函数,与pclose函数一起使用。 1.1函数定义: FILE * popen ( const char * command , const char * type ); int pclose ( FILE * stream ); 1.2包含头文件: #include<stdio.h> 1.3...
  • linux shell函数参数及其变量

    千次阅读 2009-10-21 10:09:00
    linux中的SHELL函数是可以带参数的. ====代码=== #!/bin/bash function show(){echo $0 #返回脚本本身名字而不是函数名echo $1 #返回调用时的第一个参数...echo $9 #返回调用时的第九个参数} echo "Begin" 
  • s h e l l允许将一组命令集或语句形成一个可用块,这些块称为s h e l l函数函数体。 标题是函数名。函数体是函数内的命令集合。标题名应该唯一;如果不是,将会混淆结 果,因为脚本在查看调用脚本前将首先搜索...
  • Linux shell编程之创建函数

    千次阅读 2018-09-26 10:28:14
    创建函数函数的语法格式 ②返回值 默认退出状态码 使用return命令 使用函数输出 ③传递参数 ④在函数中处理变量     前言 函数:起个名字在代码中任何位置使用的代码块,提高脚本开发效率,降低代码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 90,838
精华内容 36,335
关键字:

linuxshell函数返回

linux 订阅