В системах с /dev/fd/x
вы также можете сделать:
var1=$(
curl -XPUT 'http://localhost:9200/my_index5/my_type/my_id?pipeline=attachment&pretty' -d @/dev/fd/3 3<< EOF
{ "data" : "$(base64 sample.pdf | tr -d '\n')" }
EOF
)
В зависимости от реализации оболочки данные сохраняются во временном файле или через трубу.
С помощью zsh
или bash
вы также можете сделать следующее:
var1=$(
curl -XPUT 'http://localhost:9200/my_index5/my_type/my_id?pipeline=attachment&pretty' \
-d @<(
printf ' { "data": "'
base64 sample.pdf | tr -d '\n'
printf ' }\n'
)
)
Это было бы немного эффективнее, а также работало бы для команд, выводящих двоичные данные.