Bash -gt: operador inesperado

Bash -gt: operador inesperado

Tenho um checkSpace.shque verifica o espaço utilizado em um disco e se for maior que 80 para um serviço

#!/bin/bash

percent=sudo df /media/usb | tail -n 1 | grep -E [[:digit:]]+% -o | grep -E [1-9]+ -o
if [ $percent -gt 80 ]; then
  sudo service motion stop
fi
echo "used space is"
echo $percent

Mas quando eu executo sudo sh checkSpace.shisso me dá:

1 
checkSpace.sh: 4: [: -gt: unexpected operator 
used space is

Responder1

Se você quiser executar o comando sudo df ...., você precisa usarsubstituição de comando. Assim, substitua:

percent=sudo df /media/usb | tail -n 1 | grep -E [[:digit:]]+% -o | grep -E [1-9]+ -o

Com:

percent=$(sudo df /media/usb | tail -n 1 | grep -E [[:digit:]]+% -o | grep -E [1-9]+ -o)

O que deu errado

percent=sudo df /media/usb | tail -n 1 | grep -E [[:digit:]]+% -o | grep -E [1-9]+ -o

No comando acima, a variável shell percenté temporariamente definida com o valor sudoe então o comando df /media/usbe sua saída são enviados para o tailcomando. percentnão recebe nenhum valor permanente e a saída do pipeline é enviada para stdout.

informação relacionada