jq 分割字符串并赋值

Riz*_*eed 12 json jq

我有以下 json

{
    "version" : "0.1.2",
    "basePath" : "/"
}
Run Code Online (Sandbox Code Playgroud)

所需的输出是

{
    "version" : "0.1.2",
    "basePath" : "beta1"
}
Run Code Online (Sandbox Code Playgroud)

我有以下 jq ,它产生以下错误:

.basePath = .version | split(".") as $version | if  $version[0] == "0" then "beta"+ $version[1] else $version[0] end
Run Code Online (Sandbox Code Playgroud)

jq:错误(位于:3):分割输入和分隔符必须是字符串退出状态5

使用.basePath = .version成功分配值并.version | split(".") as $version | if $version[0] == "0" then "beta"+ $version[1] else $version[0] end自行返回"beta1"。有没有办法将字符串分配给键basePath

pea*_*eak 17

好消息!您提出的解决方案只是缺少一对括号。另外,也没有必要$version。也就是说,这将做到这一点:

.basePath = (.version | split(".")
             | if .[0] == "0" then "beta"+ .[1] else .[0] end)
Run Code Online (Sandbox Code Playgroud)