
Tenho um checkSpace.sh
que 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.sh
isso 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 sudo
e então o comando df /media/usb
e sua saída são enviados para o tail
comando. percent
não recebe nenhum valor permanente e a saída do pipeline é enviada para stdout.