Bash -gt: unerwarteter Operator

Bash -gt: unerwarteter Operator

Ich habe ein checkSpace.shProgramm, das den belegten Speicherplatz auf einer Festplatte überprüft und wenn dieser größer als 80 ist, einen Dienst stoppt

#!/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

Aber wenn ich es ausführe, sudo sh checkSpace.sherhalte ich Folgendes:

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

Antwort1

Wenn Sie den Befehl ausführen möchten sudo df ...., müssen Sie verwendenBefehlsersetzung. Ersetzen Sie daher:

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

Mit:

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

Was schief gelaufen ist

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

Im obigen Befehl percentwird die Shell-Variable vorübergehend auf den Wert gesetzt sudound dann der Befehl df /media/usbund seine Ausgabe an den Befehl gesendet tail. percentEs wird kein permanenter Wert zugewiesen und die Ausgabe der Pipeline wird an stdout gesendet.

verwandte Informationen