bashのファイルに連想配列の内容を印刷します。

bashのファイルに連想配列の内容を印刷します。

Bashでは、連想配列の内容をファイルとして印刷する必要があります。コンソール出力の印刷は正常に機能しますが、ファイルとして印刷しようとすると、1つの要素のみが印刷されます。これは私のコードです

 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

理由:

  • より簡潔:重複した文字列を削除し、繰り返しごとに2つのコマンド実行を保存します。
  • printfより良いecho

関連情報