Como você continua uma sentença com um comando dentro

11

Por exemplo, tenho tentado dizer "Há 10 pessoas on-line no momento" no meu arquivo de script.

Eu nunca consigo fazer o comando funcionar sem a parte "people online at the moment" na próxima linha.

No momento, tenho

w='who | wc -l' 
echo "There are $w people online at the moment" 

No entanto, sempre acabo com a saída

There are who | wc -l users online at the moment 

Como você consegue o comando trabalhando no meio? Eu tenho tentado olhar e copiar exemplos, mas isso não parece ajudar no meu problema de substituição de comando.

    
por techiegeek 12.12.2014 / 07:53

3 respostas

20

Você quer a saída de

who | wc -l

atribuído a w , não aquela string, que é o que você obtém por causa das aspas em torno dela. Você deve usar a substituição de comando $(...) :

w=$(who | wc -l)
echo "There are $w people online at the moment"

(você também pode usar os backquotes, mas não pode aninhá-los facilmente).

    
por 12.12.2014 / 08:01
10

Outra solução:

echo There are $(who | wc -l) people online at the moment

    
por 12.12.2014 / 08:03
5

você deve usar o backtick para executar o comando

w='who | wc -l' echo "There are $w people online at the moment"

    
por 12.12.2014 / 07:58