Erro de script após o comando bc

0

Estou tentando executar um script conforme mostrado abaixo:

#!/bin/bash
USED='free -m | more | grep -v total | head -1 | cut -d':' -f2 | cut -d' ' -f18'
CACHE='free -m | more | grep -v Swap | tail -1 | cut -d':' -f2 | cut -d' ' -f9'
TOTAL='free -m | more | grep -v total | head -1 | cut -d':' -f2 | cut -d' ' -f11'
echo "scale=2 ; ((($USED - $CACHE) /$TOTAL) *100)" | bc

Mas sempre recebo o seguinte erro:

(standard_in) 1: parse error
    
por user212051 09.06.2014 / 11:10

1 resposta

2

Se você remover o canal para bc | bc , execute o script, ele exibirá:

scale=2 ; (((5538 - ) / 5969) * 100)

Você pode ver que $CACHE variable é nula, causando% de erro de sintaxebc.

Você pode tentar:

CACHE=$(free -m | more | grep -v Swap | tail -1 | cut -d':' -f2 | awk '{print $1}')

OBSERVAÇÃO

  • Usar awk para analisar a saída é melhor que cut nesse caso.
  • Você deve tentar $ (...) para a substituição de comandos.
por 09.06.2014 / 11:26