linux - 从 bash 中的文件内容设置变量(循环)

标签 linux bash shell loops

我正在尝试将证书(刚刚创建的)上传到一些存储。

所以我可以读取文件夹中的所有证书,并希望将每个文件的内容用于循环中的变量。

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

我知道我应该使用另一个循环,但不知道如何。

感谢任何提示!

最佳答案

这应该可以完成工作:

#!/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."}

关于linux - 从 bash 中的文件内容设置变量(循环),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53814510/

相关文章:

linux - 使用格式化输出按条件选择行

php - 是否有可下载的预配置 LAMP 堆栈?

java - MongoDB 连接问题

bash - 在 Bash 中将 clear 绑定(bind)到 ^l

python - 为什么我的 Docker 容器在启动后没有将控制权返回给终端?

c - 用 C 为操作系统编写 shell 模拟器 : Shell not staying active after multiple commands given

linux - 无法在 rackspace 云服务器上的 ubuntu 上运行 jbossas7

bash - 是否可以在 Bash 脚本的 switch case 中组合两个条件?

bash - 为什么/bin/kill 的有效信号与 kill 不同?

linux -/etc/init.d/something 和/etc/rc.local 到底有什么区别