我试图在循环卷曲时调用变量。如果直接传递值它可以正常工作但如果我作为变量传递它会一直失败。
#!/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)
“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"