[英]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.