![在 bash 中将关联数组的内容打印到文件中](https://linux22.com/image/187634/%E5%9C%A8%20bash%20%E4%B8%AD%E5%B0%86%E5%85%B3%E8%81%94%E6%95%B0%E7%BB%84%E7%9A%84%E5%86%85%E5%AE%B9%E6%89%93%E5%8D%B0%E5%88%B0%E6%96%87%E4%BB%B6%E4%B8%AD.png)
我需要将关联数组的内容打印到 bash 中的一个文件中。控制台输出打印工作正常,但当我尝试将其打印到文件时,只有一个元素被打印。这是我的代码
for KEY in "${!SYMBOLICLINK[@]}"; do
printf "$KEY --> ${SYMBOLICLINK[$KEY]}" > /tmp/symlinks.txt
# Print the KEY value
echo " $KEY --> ${SYMBOLICLINK[$KEY]}"
done
有人可以告诉我我在这里缺少什么吗
我也经历过这个
但这没有帮助
答案1
这是它不适合你的地方:
printf "$KEY --> ${SYMBOLICLINK[$KEY]}" > /tmp/symlinks.txt
重定向>
会覆盖该文件。您想要>>
, 追加。
总的来说,我会这样编写代码,以提高安全性、可读性和性能:
for KEY in "${!SYMBOLICLINK[@]}"; do
printf "%s --> %s\n" "$KEY" "${SYMBOLICLINK[$KEY]}"
done | tee /tmp/symlinks.txt
理由:
- 更简洁:摆脱冗余字符串并节省每次迭代运行两个命令
printf
优于echo