Установить переменную из содержимого файлов в bash (loop) - PullRequest
0 голосов
/ 17 декабря 2018

Я пытаюсь загрузить сертификаты (только что созданные) в какое-то хранилище.

Поэтому я могу прочитать все сертификаты в своей папке и захотеть использовать содержимое каждого из этих файлов в переменную в цикле.

#!/bin/bash
dir="${0%/*}"
#for f in $(cat $dir"/"*.crt)
#  do
#    data='{"certificate_data":'"$f"'}'
#done 
url="localhost:50183/api/v0.1/Certificates"
data='{"certificate_data":'$(cat $dir"/"*.crt)'}'
echo "$data"

Таким образом, я получил все сертификаты за один раз, но мне нужно получить в $ data каждый из содержимого файлов в цикле с правильной формой, например:

{"certificate_data":"<certificate_data_from_file>"}
{"certificate_data":"<certificate_data_from_file>"}
......
and so on

Я знаючто я должен использовать еще один цикл, но не знаю как.

Буду благодарен за любые советы!

1 Ответ

0 голосов
/ 17 декабря 2018

Это должно сделать работу:

#!/bin/bash
for f in ./dir/*.crt
do
  data='{"certificate_data":"'"$(< "${f}")"'"}'
  echo "${data}"
done

Тест:

$ ls ./dir/*
./dir/cert1.crt  ./dir/cert2.crt
$ cat ./dir/*
I am certificate1.
I am certificate2.
$ ./cert.sh
{"certificate_data":"I am certificate1."}
{"certificate_data":"I am certificate2."}
...