jq-1.6
Run Code Online (Sandbox Code Playgroud)
a='[{"a":"b"},{"c":"d c"}]'
b="d c"
echo $a|jq '.[]|select(.c == "'$b'")'
Run Code Online (Sandbox Code Playgroud)
{
"c": "d c"
}
Run Code Online (Sandbox Code Playgroud)
jq-1.5-1-a5b5cbe
Run Code Online (Sandbox Code Playgroud)
a='[{"a":"b"},{"c":"d c"}]'
b="d c"
echo $a|jq '.[]|select(.c == "'$b'")'
Run Code Online (Sandbox Code Playgroud)
jq: error: syntax error, unexpected $end, expecting QQSTRING_TEXT or QQSTRING_INTERP_START or QQSTRING_END (Unix shell quoting issues?) at <top-level>, line 1:
.[]|select(.c == "d
jq: 1 compile error
Run Code Online (Sandbox Code Playgroud)
如上,linux环境和macos环境下jq的select函数中的空格扩展是有区别的。我已经尝试在linux环境中下载jq-1.6,但它也产生了像上面的linux示例KO一样的问题。linux版本的jq还存在bug吗?有人能以另一种很好的方式来实现上述功能吗?我在 shell 中使用 jq 来解析数据库信息并获取指定内容...提前致谢!
family 目录中有三个文件,名为“a”“b”“c”。我使用“rm -rf !(a)”删除了“b”和“c”文件,在 bash CLI 中运行后,它工作正常。如下:
xx@xx:~/# ls
a b c
xx@xx:~/# rm -rf !(a)
xx@xx:~/# ls
a
Run Code Online (Sandbox Code Playgroud)
然而,当我通过“bash -c”运行它时,它向我抛出了一个语法错误,如下所示:[![在此处输入图像描述]
xx@xx:~/# ls
a b c
xx@xx:~/# bash -c "rm -rf !(a)"
bash: -c: line 0: syntax error near unexpected token`('
bash: -c: line 0:`rm -rf !(a)'
Run Code Online (Sandbox Code Playgroud)
然后我在“!”、“(”和“)”之前添加了反斜杠。虽然,并没有出现错误;我发现它不起作用。如下:
xx@xx:~/# ls
a b c
xx@xx:~/# bash -c "rm -rf \!\(a\)"
xx@xx:~/# ls
a b c
Run Code Online (Sandbox Code Playgroud)
任何机构都可以帮助澄清这个问题吗?