Unix printf não formata strings conforme esperado - em vez disso, imprime a string de formatação

Unix printf não formata strings conforme esperado - em vez disso, imprime a string de formatação

Quero escrever algumas variáveis ​​ENV em um arquivo .txt com o printfcomando (e ignorar as linhas que estão vazias porque a variável env não está definida):

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

No meu ambiente local WSL e Docker (centos 7) funciona conforme o esperado. Mas nos servidores onde o script deve rodar ele imprime apenas 79sno arquivo foobar.txt:

cat foobar.txt
79s
79s

Alguém tem uma ideia de por que o printfcomando não funciona como esperado?

Sinta-se à vontade para me sugerir outras soluções. Mas também estou muito interessado em saber por que o comando não funciona conforme esperado em meus servidores remotos.

informação relacionada