我需要将关联数组的内容打印到 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