Bashでは、連想配列の内容をファイルとして印刷する必要があります。コンソール出力の印刷は正常に機能しますが、ファイルとして印刷しようとすると、1つの要素のみが印刷されます。これは私のコードです
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
理由:
- より簡潔:重複した文字列を削除し、繰り返しごとに2つのコマンド実行を保存します。
printf
より良いecho