Unix printf не форматирует строки ожидаемым образом — вместо этого он печатает строку форматирования

Unix printf не форматирует строки ожидаемым образом — вместо этого он печатает строку форматирования

Я хочу записать некоторые переменные ENV в файл .txt с помощью команды printf(и игнорировать строки, которые пусты, поскольку переменная env не установлена):

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

В моей локальной среде WSL и Docker (centos 7) это работает как и ожидалось. Но на серверах, где должен запускаться скрипт, он выводит только 79sв файле foobar.txt:

cat foobar.txt
79s
79s

Есть ли у кого-нибудь идеи, почему printfкоманда не работает так, как ожидалось?

Не стесняйтесь предлагать мне другие решения. Но мне также очень интересно, почему команда не работает так, как ожидалось, на моих удаленных серверах.

Связанный контент