Curl Inside While循环导致语法错误导致失败

时间:2017-08-21 04:47:32

标签: unix curl while-loop

我试图在循环卷曲时调用变量。如果直接传递值它可以正常工作但如果我作为变量传递它会一直失败。

#!/bin/bash
while IFS= read -r line || [[ -n "$line" ]];
do
   curl -XPOST 'http://localhost:8080/_count?pretty' -d '
   {
      "query": {
      "bool": {
      "must": [ {
             "term": {
                      "M": "image"
                     }
                }, {
             "term": {
             "C": "$line"
           }}]}}}'
  done < "$1" 

说我的示例文件有数据: -

 ABC:124:456
 ABC:345:786

我不确定为什么会遇到语法错误。我遗失任何地方的任何地方?

此致

2 个答案:

答案 0 :(得分:0)

@John Gordon ..谢谢。我能够用你的输入修复它。

“Shell变量不会在单引号内展开”

答案 1 :(得分:0)

您可以使用双引号启用shell变量扩展,并引用要传递给curl的双引号。

#!/bin/bash
while IFS= read -r line || [[ -n "$line" ]];
do
   curl -XPOST 'http://localhost:8080/_count?pretty' -d "
   {
      \"query\": {
      \"bool\": {
      \"must\": [ {
             \"term\": {
                      \"M\": \"image\"
                     }
                }, {
             \"term\": {
             \"C\": \"$line\"
           }}]}}}"
  done < "$1"