linux - 无法将第三个参数传递给 bash 脚本
问题描述
我认为答案对您来说很简单,但是我无法单独处理。首先,脚本中的函数如下所示:
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"
或者,如果所有参数都正常工作,请尝试传递。
推荐阅读
- powershell - Powershell 脚本创建批量用户并将其分配给多个组
- excel - Excel VBA:根据日期(单元格值)删除行并附加到另一个工作表
- java - Java:使用 javax.json.JsonObject 和 RESTEasy 嵌入式服务器时 JSON 模式错误
- django - django下载多个字节流文件
- c# - 使用 C# 使用 Dapper Plus 进行批量插入的最快方法
- rx-java - 如果 observable.filter().first() 什么都不返回,如何返回 Observable.empty()?
- mysql - mySQL WooCommerce - 产品、类别、价格和数量表
- tinymce - Umbraco Tinymce 为空标签添加空格
- heroku - Heroku 上的 Puppeteer 代理
- mongodb - MongoDB聚合问题