Ao executar
echo abcd | wc -c
retorna 5
.
Mas a palavra abcd
tem apenas 4 caracteres.
Está echo
imprimindo algum caractere especial após a palavra abcd
?
E posso impedir echo
que imprima isso?
text-processing
echo
wc
user78050
fonte
fonte
printf
melhor queecho
?wc -c
não informa quantos caracteres há; apenas informa quantos bytes são.Respostas:
echo
imprimir nova linha (\n
) no final da linhaCom algumas
echo
implementações, você pode usar-n
:e teste:
Com alguns outros, você precisa da
\c
sequência de escape:Portably, use
printf
:(observe que
wc -c
conta bytes, não caracteres (emboraabcd
, geralmente, sejam equivalentes). Usewc -m
para contar caracteres).fonte
echo
implementações (todas compatíveis com Unix, pelo menos), é apenas aecho 'abcd\c'
saídaabcd
.echo -e 'abcd\c'
emecho
implementações compatíveis com Unix seriam exibidas-e abcd
.Se você executar
echo
sem a-n
opção, ele gravará um caractere de nova linha após os argumentos. Caso contrário, se você digitarecho foo
, seu próximo prompt de shell aparecerá à direita dofoo
. Então,wc
está contando a nova linha.fonte
Por padrão,
echo
imprimirá um caractere de nova linha (\n
) após a sequência (é por isso que você vê o prompt do shell na próxima linha, em vez da mesma linha em queabcd
é impressa.)Você pode tentar adicionar um
-n
parâmetroecho
para desativar o caractere de nova linha à direita.fonte