shell脚本返回null输出

时间:2016-06-10 08:53:04

标签: linux bash shell jq

我无法调试它返回

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

2 个答案:

答案 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