Estou tentando adicionar o seguinte ao meu .bashrc:
cpu_info() {
top -b -n1 | grep Cpu(s) | awk '{print $2 + $4}'
}
mas bash está me dizendo:
bash: .bashrc: line 131: syntax error near unexpected token `('
bash: .bashrc: line 131: ` top -b -n1 | grep Cpu(s) | awk '{print $2 + $4}''
o comando funciona bem no terminal, não sei por que está quebrando meu script bash
alguma ideia?
Não é o
awk
comando que está causando problemas, mas o padrão que você está usando com ogrep
.Um parêntese sem aspas é especial para o shell. Ele introduz um subshell, mas no contexto em que você o está usando não faz sentido, daí o erro de sintaxe.
Portanto, o texto
Cpu(s)
deve ser citado como'Cpu(s)'
. Se você pretende que este seja um pedaço de string literal que deseja pesquisar, o ideal é usar tambémgrep
com sua-F
opção. Isso impedegrep
a interpretação do padrão como uma expressão regular.Porém, usar
grep
junto comawk
é quase sempre desnecessário, poisawk
está perfeitamente equipado para fazer a mesma coisa:Aqui, evito
(
interpretá-lo como um parêntese esquerdo literal e não como o início de um agrupamento de uma subexpressão.