簡體   English   中英

如何在bash中將函數的輸出分配給變量?

[英]How to assign the output of a function to a variable in bash?

已經討論過了,但是我還有一個不同的問題:我有一個函數,需要使用$@作為參數來調用。

如果我把var=$(function $@)放進去,我只會在函數執行的每一行收到錯誤。

同時,我使用了一個workaroud:

  1. 我首先調用了函數: function $@
  2. 然后,我將函數的結果存儲到變量中: var=$?

但這僅在函數返回為“成功”或“失敗”的情況下有效。 有什么想法嗎?

碼:

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. 也許使用elif這樣您就不會收到返回的多個值(也可以使用case語句是一個更好的解決方案)。

  2. var=$(function $@ >/dev/null 2>&1; echo $?)應該相信嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM