Como obter o número de palavras dadas como entrada em um comando “read”?

0

Para o seguinte comando, como saber quantas palavras são dadas na entrada?

$ read text

Eu gostaria de pegar uma nova variável que contará o número de palavras dadas para o "texto". Como por exemplo se,

$ read text
apple

A variável, se for x, receberá um valor de '1'

e para o seguinte,

$read text
apple banana

'x' terá um valor de 2.

    
por Md Didarul Islam 12.09.2016 / 01:04

3 respostas

3

Também há a opção bash imediata, usando a opção -a para read :

read -a text
echo "The input '${text[@]}' contains ${#text[@]} words."

Com a opção -a , a variável é uma matriz de palavras obtida usando o separador IFS usual. Veja man bash , sob BUILTIN COMMANDS, para mais detalhes.

    
por 12.09.2016 / 01:56
3

Aqui está mais uma maneira de fazê-lo - leia a variável como você já tem, então use o padrão POSIX set utilitário junto com o mecanismo de expansão de variável padrão do shell, em seguida, atribua o número resultante de elementos a x :

read text
set -f        ## disable filename generation ("globbing")
set -- $text
x=$#
    
por 12.09.2016 / 03:10
1

Você pode usar wc -w para contar palavras. (Por favor, dê uma olhada em man wc .)

$ read text
apple banana
$ echo $text
apple banana
$ echo $text|wc -w
2
$ x=$(echo $text|wc -w)
$ echo $x
2
$ echo "The input '$text' contains $x words."
The input 'apple banana' contains 2 words.
    
por 12.09.2016 / 01:12

Tags