Bash 有一段时间了吗

Bash 有一段时间了吗,bash,character,jq,Bash,Character,Jq,因此,我有一个从xml转换而来的json文件。我试图在bash脚本中使用jq来解决这个问题 当前位于命令行jq-r'.users.user[0].id.“#text”'cosmology18.json的效果非常好,并完美地显示了输出 然而,在bash中,我不得不使用替换来尝试让它工作,但没有解决方案 首先,我让它的一部分工作,第一部分读取用户数据 baselineresult=$(jq -r '.users.user[1].cpid."#text"' $1) 能让我完美地回显接收到的数据吗

因此,我有一个从xml转换而来的json文件。我试图在bash脚本中使用jq来解决这个问题

当前位于命令行
jq-r'.users.user[0].id.“#text”'cosmology18.json
的效果非常好,并完美地显示了输出

然而,在bash中,我不得不使用替换来尝试让它工作,但没有解决方案

首先,我让它的一部分工作,第一部分读取用户数据

  baselineresult=$(jq -r '.users.user[1].cpid."#text"' $1)
能让我完美地回显接收到的数据吗

然而,当我尝试添加
$basecount
时,每次都会增加,我无法让它工作,所以我构建了一个疯狂的方法,在这个方法中,我必须使用替换将$basecount添加到用户的[]中

  bracea="["
  braceb="]"
  dquote='"'
  squote="'"
  pound="#"
  echo test of command is jq -r "${squote}.users.user${bracea}${basecount}${braceb}.cpid.${dquote}#text${dquote}${squote} $1"

  baselineresult=$(jq -r "${squote}.users.user${bracea}${basecount}${braceb}.cpid.${dquote}${pound}text${dquote}${squote} $1")
  echo $baselineresult
该命令与我在命令行中输入的命令相匹配

但我得到的是:

命令的测试是jq-r'.users.user[0].cpid.“#text”'cosmology18.json jq:error:syntax error,意外的无效字符,第1行应为$end(Unix shell引用问题?): '.users.user[0].cpid.#text“'cosmology18.json jq:1编译错误

有什么想法吗。。我已经做了8个小时了。
我似乎找不到这个非法字符,因为输出与jq-r.users.user[0].id.“#text”cosmology18.json命令行中使用的id相同。问题是,您不知道什么是
bash
语法和什么是
jq
语法,所以要将它们合并在一起

以下是
jq
所期望的示例:

.users.user[1].cpid."#text"
以下是你给它的:

'.users.user[1].cpid."#text"' filename
jq
永远不会看到单引号,在您的工作命令中,它们是bash语法,用于指定要传递给
jq
的字符串。相反,您尝试给
jq
提供单引号,而jq不知道这意味着什么

类似地,文件名后面的空格是bash语法,用于指定要传递第二个参数。相反,您尝试在其第一个参数中将它们赋给
jq
,这是它所不期望的

对于
jq
,此命令与原始命令无法区分(它会导致使用完全相同的参数调用
execve
)。您可以改变变量以获得不同的索引:

var=1
baselineresult=$(jq -r '.users.user['"$var"'].cpid."#text"' "$1")

抱歉,我在命令的echo测试上方键入了一个echo,它是jq-r“${squote}.users.user${bracea}${basecount}${braceb}.cpid.${dquote}${pound}text${dquote}${squote}$1”还要注意的是,我甚至尝试了所有的替换,但jq仍然有一段地狱般的时间来接受bash发送给它的正确输出。因此,这不是bash,而是jqc的一些东西。您可以修复这行代码“首先,我让它的一部分工作,第一部分用来读取用户数据?”您可以解释一下您希望脚本做什么,可能是用伪代码吗?当我运行baselineresult=$(jq-r.users.user[0].cpid.#text“'cosmology18.json)时,包含示例inputwell也会很有帮助它给了我cpid,我反刍了一下。。当我尝试替换以增加循环中的[0]时,itd总是失败,这与[0]有关root@iFoggz-s1:~/Downloads/snapshots/converted#jq-r'.users.user[0].cpid.“#text”“cosmology18.json e64c6f0a50af958349a03ee08ab178f7是我在终端中得到的,但我将尝试根据您展示的示例对其进行修补。没错,我删除了${squote}aka”,它成功了。非常感谢你,我确信我95%的头发还留着!