在 bash 中将关联数组的内容打印到文件中

在 bash 中将关联数组的内容打印到文件中

我需要将关联数组的内容打印到 bash 中的一个文件中。控制台输出打印工作正常,但当我尝试将其打印到文件时,只有一个元素被打印。这是我的代码

 for KEY in "${!SYMBOLICLINK[@]}"; do
    printf "$KEY --> ${SYMBOLICLINK[$KEY]}" > /tmp/symlinks.txt
     # Print the KEY value
     echo " $KEY --> ${SYMBOLICLINK[$KEY]}"
      done   

有人可以告诉我我在这里缺少什么吗

我也经历过这个

BASH 关联数组打印

但这没有帮助

答案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

相关内容