bash - resposta errada por comando de contagem de palavras

2

Estou tentando obter a contagem de palavras de uma string usando o comando wc . Mas isso me dá uma resposta diferente. Aumenta o número de palavras em 1.

Este é o código:

echo Enter a string:
read str
len='echo $str | wc -c'
echo you have entered: $str
echo and the word count: $len

A saída é assim:

Enter a string:
robin
you have entered: robin
and word count: 6

O que estou fazendo de errado? Por favor me ajude a resolver isso. Estarei muito grato. Obrigado.

    
por Robin 26.04.2014 / 01:31

2 respostas

10

Assumindo que você quer dizer contagem de caracteres não contagem de palavras (que seria 1), o problema é que echo adiciona um caractere de nova linha. Você pode usar

len='echo -n $str | wc -c'

(a opção -n suprime a nova linha) ou - melhor - basta usar o operador bash # variable length

len=${#str}
    
por steeldriver 26.04.2014 / 01:45
0

De man wc :

-c, --bytes
    print the byte counts

-w, --words
    print the word counts

Portanto, você deve usar wc -w em vez de wc -c .

    
por Louis Matthijssen 26.04.2014 / 01:36