我无法调试它返回
null值的原因。有人可以帮忙解决这个问题。
代码 -
getJSONParamater() { echo "Before : $1 $2 $3" eval "$3=$(cat $1 | jq '."$2"')" echo "After : $1 $2 $3" } return_value='default' getJSONParamater etl-without-transformation.json success_email return_value echo $return_value
答案 0 :(得分:4)
jq '."$2"'
会将文字."$2"
作为jq的表达式发送,您想要的是:
jq --arg key "$2" '.[$key]' "$1"
同时删除无用的cat
。
我不太明白你对eval部分的要求是什么?但我想您是要尝试将return_value
设置为jq
的结果?
getJSONParameter() {
jq --arg key "$2" '.[$key]' "$1"
}
return_value="$(getJSONParameter "etl-without-transformation.json" "success_email")"
答案 1 :(得分:1)
使用全局变量的另一种方法:
return_value='default'
getJSONParamater() {
return_value=$(cat "$1" | jq "$2")
}
getJSONParamater etl-without-transformation.json .success_email
echo $return_value