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