如何将函数的输出分配给bash中的变量?

时间:2016-03-20 10:25:29

标签: linux bash function

这已经讨论过,但我有一个更加不同的问题: 我有一个需要使用$@作为参数调用的函数。

如果我放var=$(function $@),我只会收到函数操作的每一行的错误。

与此同时,我使用了一个workaroud:

  1. 我先调用了这个函数:function $@
  2. 然后我将函数的结果存储到变量中:var=$?
  3. 但是,只要函数返回“成功”或“失败”,这就有效。 有什么想法吗?

    代码:

    function()
    {
        if [ $1 -gt $x ]
        then
            return 0
        fi
    
        if [ $1 -eq $x ]
        then
            return 1
        fi
    
        if [ $1 -lt $x ]
        then
            return 2
        fi
    }
    

    我想存储在我的变量0,1或2中。 为此:

    menu ()
    {
        if [ $# -gt 5 ] || [ $# -lt 1 ]
        then
            echo "Error! Script is: " $0
            return
        fi
    
        echo "Insert reference number: "
        read x
    
        while [ $# -gt 0 ]
        do
            rez=$(function $@)
    
            if [ $rez -eq 0 ]
            then
                echo "Nr >!" $1
            fi
    
            if [ $rez -eq 1 ]
            then
                echo "Nr =!" $1
            fi
    
            if [ $rez -eq 2 ]
            then
                echo "Nr <!" $1
            fi
            shift
        done
    }
    

1 个答案:

答案 0 :(得分:1)

  1. 也许使用elif s,这样您就不会收到多个返回的值(也是一个案例陈述可能是更好的解决方案)。

  2. var=$(function $@ >/dev/null 2>&1; echo $?)我应该做你想做的事吗?