Bash 无法使用curl:参数太长将大文件发送到elasticsearch

Bash 无法使用curl:参数太长将大文件发送到elasticsearch,bash,shell,curl,Bash,Shell,Curl,这是我用来将一些文档导出到elasticsearch的脚本,但运气不好 #!/bin/ksh set -v trap read debug date=$(date +%Y-%m-%d); echo $date; config_file="/home/p.sshanm/reports_elastic.cfg"; echo $config_file; URL="http://p-acqpes-app01.wirecard.sys:9200/reports-"$date""; echo $URL;

这是我用来将一些文档导出到elasticsearch的脚本,但运气不好

#!/bin/ksh
set -v 
trap read debug
date=$(date +%Y-%m-%d);
echo $date;
config_file="/home/p.sshanm/reports_elastic.cfg";
echo $config_file;
URL="http://p-acqpes-app01.wirecard.sys:9200/reports-"$date"";
echo $URL;

find /transfers/documents/*/done/ -type f -name "ABC-Record*_${date}*.csv"|
while IFS='' read -r -d '' filename
do
    echo "filename : ${filename}"
    var=$(base64 "$filename"| perl -pe 's/\n//g');

    #if i use below it will fail as argument too long , so i used with curl option @
    # var1= $(curl -XPUT 'http://localhost:9200/reports-'$date'/document/reports?pipeline=attachment&pretty' -d' { "data" : "'$var'" }')

    var1=$(curl -X PUT -H "Content-Type: application/json" -d @- "$URL" >>CURLDATA
    { "data": "$var" }
    CURL_DATA)
done;
如果我在下面用它作为

var1= $(curl -XPUT 'http://localhost:9200/reports-'$date'/document/reports?pipeline=attachment&pretty' -d' { "data" : "'$var'" }')
将失败,如下所示,因此我使用了curl选项
@

争论太长


您从
stdin
读取的语法错误,应该是(
您可以尝试在
URL
作为
curl-XPUT添加双引号吗?”http://localhost:9200/reports-$date/document/reports?pipeline=attachment&pretty“-d'{“data”:““$var”“}”
curl:/usr/bin/curl:无法执行[参数列表太长]使用
@
选项有效吗?使用它有问题吗?是的,但出现语法错误。第31行:第32行的语法错误:
)'意外的
var1=$(curl-X PUT-H“Content Type:application/json”-d-“$URL”>>CURLDATA{“data”:“$var”}curl\u data)`再次失败
var1=$(curl-X PUT-H“Content-Type:application/json”-d@-“$URL”@code初学者:您可以先尝试而不将其放入变量中吗?请记住,在开始和结束时,除限制器
curl\u DATA
之间不应该有任何前导或尾随空格
curl -X PUT -H "Content-Type: application/json" -d @- "$URL" <<CURL_DATA
{ "data": "$var" }
CURL_DATA