Quanto ao problema em questão, acho que o Dickey está na pista.
Como alternativa, talvez use algo como:
t="$(printf "%-16.16s" "$t")"
Se t
for sempre menor que 16, o que você precisa ter certeza, você pode fazer:
t="$(printf "%-16s" "$t")"
Note que ele irá travar em caracteres não-ASCII. Por exemplo, teste:
$ x=123
$ x="$(printf "%-16.16s" "$x")"
$ printf "|%s|\n|1234567890123456|789012\n" "$x"
|123 |
|1234567890123456|789012
$ x=12345678901234567890123456
$ x="$(printf "%-16.16s" "$x")"
$ printf "|%s|\n|1234567890123456|789012\n" "$x"
|1234567890123456|
|1234567890123456|789012
$ x=sadasdæøåsasd
$ x="$(printf "%-16.16s" "$x")"
$ printf "|%s|\n|1234567890123456|789012\n" "$x"
|sadasdæøåsasd| <<<--- ups!
|1234567890123456|789012
( Ou o mais chique:
printf "\e[41m%s\e[0m\n\e[41m1234567890123456\e[0m789\n" "$x"