O problema que você tem não tem nada a ver com echo -e
ou sua função log()
. O problema é com apóstrofos:
log this is a testing's post
O shell (bash, no seu caso) tem significados especiais para certos personagens. Apóstrofos (aspas simples) são usados para citar sequências inteiras e impedir a maioria dos outros tipos de interpolação. O bash espera que eles venham em pares, e é por isso que você obtém as linhas extras de prompt até que você digite o segundo. Se você quiser uma aspa simples literal em sua string, você precisa dizer bash, por escapar via \'
, assim:
log this is a testing\'s post
Novamente, log
está além do ponto. Você pode experimentar com o antigo echo
, se desejar:
echo this is a testing\'s post
Veja Quais caracteres precisa ser escapado no bash para mais informações.