Bash -gt: operador inesperado

1

Eu tenho um checkSpace.sh que verifica o espaço usado em um disco e se é 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 com sudo sh checkSpace.sh , isso me dá:

1 
checkSpace.sh: 4: [: -gt: unexpected operator 
used space is
    
por Blitzkr1eg 28.05.2015 / 19:53

1 resposta

0

Se você quer executar o comando sudo df .... , você precisa usar substituiçã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 do shell percent é temporariamente definida para o valor sudo e, em seguida, o comando df /media/usb e sua saída são enviados para o comando tail . percent não recebe nenhum valor permanente e a saída do pipeline é enviada para stdout.

    
por 28.05.2015 / 19:59