Unix printf formatiert Zeichenfolgen nicht wie erwartet - es druckt stattdessen die Formatierungszeichenfolge

Unix printf formatiert Zeichenfolgen nicht wie erwartet - es druckt stattdessen die Formatierungszeichenfolge

Ich möchte mit dem Befehl einige ENV-Variablen in eine .txt-Datei schreiben printf(und Zeilen ignorieren, die leer sind, weil die Umgebungsvariable nicht gesetzt ist):

printf '%-79s' "${foo1}${bar1}" | grep -v '^\s\{79\}' >> foobar.txt
printf '%-79s' "${foo2}${bar2}" | grep -v '^\s\{79\}' >> foobar.txt
...

In meiner lokalen WSL- und Docker-Umgebung (CentOS 7) funktioniert es wie erwartet. Aber auf den Servern, auf denen das Skript ausgeführt werden soll, wird nur 79sdie Datei foobar.txt gedruckt:

cat foobar.txt
79s
79s

Hat jemand eine Idee, warum der printfBefehl nicht wie erwartet funktioniert?

Schlagen Sie mir gerne andere Lösungen vor. Mich interessiert aber auch sehr, warum der Befehl auf meinen Remote-Servern nicht wie erwartet funktioniert.

verwandte Informationen