假装我正在运行类似这样的内容:
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
我该如何捕捉并使用默认值?
我已经尝试:
$target?
($target)?
try $target catch null
$target? // null
但这似乎是解析时错误,显然在运行时无法捕获。我是否错过了任何动态语法?
PS:发现可以在$ARGS.name
中找到命令行参数,但是有两个缺点: