簡體   English   中英

無法將第三個參數傳遞給 bash 腳本

[英]Cannot pass third argument to bash script

我認為答案對你來說很簡單,但我無法單獨處理。 首先腳本中的函數如下所示:

function assertEqual() {

    local expected=$1
    local actual=$2
    local message=$3

    echo $message

    if [ "$actual" = "$expected" ]
    then
        echo "Test OK (actual value: $actual)"
        return 0
    else
        echo "Test FAILED, EXPECTED VALUE: $expected, ACTUAL VALUE: $actual, WILL ABORT"
        return 1
    fi
}

該函數的邏輯做它必須做的事情,它是正確的,但是我找不到將 $message 打印到控制台的方法:

local message=$3
echo $message

我正在調用這樣的函數:

assertEqual "$MOV_ID_REVS_RECS" $(echo $RESPONSE | jq .movieId) "Comparing id's"   
assertEqual 3 $(echo $RESPONSE | jq ".recommendations  | length") "Comparing recommendations length"    
assertEqual 3 $(echo $RESPONSE | jq ".reviews | length") "Comparing reviews length"

我得到的輸出是這樣的:

Test OK (HTTP Code: 200)
Test OK (HTTP Code: 200)
Test OK (HTTP Code: 200)
Wait for messages to be processed... 
Test OK (HTTP Code: 200)

Test OK (actual value: 2)

Test OK (actual value: 3)

Test FAILED, EXPECTED VALUE: 3, ACTUAL VALUE: 1, WILL ABORT

您可以看到有空白行,這意味着我錯誤地傳遞了第三個參數,對嗎?

問題可能是傳遞參數時替換中的多個單詞。

assertEqual "$MOV_ID_REVS_RECS" $(echo $RESPONSE | jq .movieId) "Comparing id's"   
assertEqual 3 $(echo $RESPONSE | jq ".recommendations  | length") "Comparing recommendations length"    
assertEqual 3 $(echo $RESPONSE | jq ".reviews | length") "Comparing reviews length"

請嘗試在參數中引用$(echo $RE...) > "$(echo $RE...)"並測試結果。 或者,如果所有參數都正常工作,請嘗試僅通過assertEqual 3 test "Comparing reviews length"

暫無
暫無

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

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