Edit:本问题已根据背景情况进行了编辑.1.将原问题中的sh和2.sh脚本分别替换为它们的真实实现:monitor or.sh和api-check.sh.

Function:

function checkAlive() {
    script="$1"
    args="${@:2}"
    startCheck=$(date +%s)
    echo "$@"
    tempResult="$( "$@" )"
    T_RC="$?"
    if [ "$T_RC" -ne 0 ]; then
        if [ "$result" = "" ]; then
            result="ERRORS: $tempResult"
        else
            result="$result ,, $tempResult"
        fi
    fi
    RC="$((RC > T_RC ? RC : T_RC))"
    timePassed
}

api-check.sh:

method="$1"
url="https://$2"
jwt="$3"
body="$4"
echo "$body"

if ! response="$(curl -s --request "$method" "$url" -w "%{http_code}" --header \
    'Authorization: Bearer '"$jwt" --header 'Content-Type: application/json' --header 'Accept: application/json' --data-raw "$body")"; then
    echo "$url curl error getting code: $response"
    exit 2
fi

monitor.sh:

api_url="foo"
oauth_token"bar"
body='{"address":"Test address"}'
checkAlive "api-check.sh" '"POST" "'$api_url'" "'$oauth_token'" '"'$body'"''

Execution Flow:

  • Sh将字符串json Body作为参数传递给check Alive函数(如上所定义).
  • 在check Alive中,echo "$@"返回:
api-check.sh "POST" "foo" "bar" '{"address":"Test address"}'
  • 由于再次出现转义问题,api-check.sh脚本永远不会正确执行

Question:个 我应该将什么json主体作为参数传递给check Alive才能正确转义OR我需要修改哪行代码以及在哪个脚本中才能正确地计算json主体?

推荐答案

  • func()而不是function func()
  • 只有"$var"个.别的什么都不是.只要确保"-"内有任何$var即可.没有更多的要求了.

api_url="foo"
oauth_token"bar"
body='{"address":"Test address"}'
checkAlive "api-check.sh" "POST" "$api_url" "$oauth_token" "$body"

Json相关问答推荐

NIFI-我需要数组的信息,但只需要第一个信息

在MongoDB中检索某个月份和年份的JSON文档

需要有关在Ffltter应用程序中解码JSON的帮助;未处理的异常:类型不是类型转换中类型的子类型

PowerShell:使用JSON原生的Short命令处理JSON?

当并非所有子对象都有 Select 器字段时 Select

使用 TypeScript 接口时如何修复未定义错误?

在 CodePipeline 中调用 lambda 时传递用户参数

如何在不使用 Newtonsoft.JSON 的情况下序列化/反序列化

使用 Jolt 变换将平面 json 转换为具有多个数组的嵌套 Json

使用 SwiftUI 在 API 调用中解码嵌套 JSON 响应时遇到问题

使用 jq 同时迭代数组

避免 KeyError 的默认字典键

SyntaxError:Object.parse(本机)AngularJS中的意外标记o

没有很多类的 GSON 解析

Jackson 动态属性名称

在 Jersey 服务中使用 JSON 对象

在 Qt 4.7 中解析 JSON 的最简单方法

在视图中将 .Net 对象转换为 JSON 对象

如何对 jq 中的 map 数组中的值求和?

为什么 jqXHR.responseText 返回字符串而不是 JSON 对象?