O motivo que é bash
de builtin echo
(e também o /bin/echo
externo) por padrão não compreende escapes de barra invertida ( \
), portanto \t
está sendo tratado literalmente (em vez de tab) .
Você precisa usar a opção -e
com bash
incorporado emecho
.
De help echo
:
-e enable interpretation of backslash escapes
Então, em bash
(ou usando /bin/echo
) você precisa:
echo -e "\t$num * $i =$s"
Por outro lado, sh
( dash
) incorporado em echo
por padrão interpreta \t
como guia, portanto, você está obtendo uma guia no caso de sh
.
Para torná-lo portátil entre todos os shells compatíveis com POSIX, use printf
:
printf '\t%s * %s =%s\n' "$num" "$i" "$s"