2017-08-21 12 views
0

ループカーリング中に変数insideを呼び出そうとしています。値を直接渡すとうまくいきますが、変数として渡すと失敗します。ループ中のカールエラーが文法エラーのために失敗する

#!/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 

それは構文エラーに実行して、なぜ私はわかりません。どこでも私は何かが足りない?

よろしく

+0

シェル変数は、一重引用符では展開されません。 –

+0

ハックはありますか? – user2854333

答えて

0

@ジョンゴードン..あなたに感謝。私はあなたの入力でそれを修正することができました。

あなたはシェル変数の展開を有効にして、あなたはカールに渡したい二重引用符を引用する二重引用符を使用することができ

0

「シェル変数は、単一引用符内で展開されていません」。

#!/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" 
関連する問題