如何在jq中捕获“未定义$ variable”?

时间:2019-11-27 18:32:39

标签: jq

假装我正在运行类似这样的内容:

jq -nr --arg target /tmp \
  '(["echo","Hello, world"]|@sh)+">\($target)/sample.txt"' \
| sh

一切都很好,除非我忘记传递变量$target

$ jq -nr '(["echo","Hello, world"]|@sh)+">\($target)/sample.txt"'
jq: error: $target is not defined at <top-level>, line 1:
(["echo","Hello, world"]|@sh)+">\($target)/sample.txt"
jq: 1 compile error

我该如何捕捉并使用默认值?

我已经尝试:

  1. $target?
  2. ($target)?
  3. try $target catch null
  4. $target? // null

但这似乎是解析时错误,显然在运行时无法捕获。我是否错过了任何动态语法?

PS:发现可以在$ARGS.name中找到命令行参数,但是有两个缺点:

  1. 这是在版本1.6中引入的,但是我在centos7上有1.5。
  2. 它不捕获本地定义的变量。

0 个答案:

没有答案