shell脚本返回null输出
问题描述:
我无法调试为什么它返回shell脚本返回null输出
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
答
jq '."$2"'
将发送文字."$2"
作为一个JQ表达,你想要的是:
jq --arg key "$2" '.[$key]' "$1"
还删除了无用的使用cat
。
我不太明白你想要什么与评估部分?但我想你试图设置return_value
来自jq
的结果?
getJSONParameter() {
jq --arg key "$2" '.[$key]' "$1"
}
return_value="$(getJSONParameter "etl-without-transformation.json" "success_email")"
答
的另一种方法,通过使用全局变量来做到这一点:
return_value='default'
getJSONParamater() {
return_value=$(cat "$1" | jq "$2")
}
getJSONParamater etl-without-transformation.json .success_email
echo $return_value
@Inian - 我只是想它和它的作品对我来说用双引号 – Smeeheey
@devsda推测其因为'猫... | jq ...'命令返回null – Smeeheey
要调试shell脚本,请在顶部放置'set -x'。然后它会在执行它时显示每一行,这样你就可以看到发生了什么问题。 – Barmar