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
awkpara analisar a saída é melhor quecutnesse caso. - Você deve tentar $ (...) para a substituição de comandos.