Contando entrada de leitura sempre retorna 1 no shell [closed]

0

Estou aceitando a entrada de um usuário usando read . Eu estou tentando contar o resultado como de costume com wc -c e armazená-lo em uma variável, mas o resultado sempre retorna 1.

Abaixo está o

#!/bin/bash 

echo -n "Enter your plaintext.> "
read text

count=$(echo $text | wc -w)
echo  $count

De alguma forma, quando a variável não é armazenada como variável e o eco direto será o resultado correto.

#!/bin/bash 

echo -n "Enter your plaintext.> "
read text

echo $text | wc -w
    
por Leon Armstrong 06.02.2017 / 14:19

1 resposta

3

Seu código funciona.

read text
count=$( echo "$text" | wc -w )

Isso definirá count para 2 se eu inserir o texto hello world .

Nos comentários, você fala sobre a contagem de caracteres.

count=$( echo "$text" | wc -c )

ou

count=${#text}

fará isso por você. No entanto, a solução wc também contará a nova linha final, fornecendo um valor que é um caractere maior que o método de expansão de parâmetro. O método wc também comprimirá os espaços da string, a menos que você aspa duas vezes a expansão de $text , como eu fiz acima.

    
por 06.02.2017 / 14:44