Bash -gt: неожиданный оператор

Bash -gt: неожиданный оператор

У меня есть, checkSpace.shкоторый проверяет используемое место на диске и если больше 80, останавливает службу.

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

Но когда я запускаю его, sudo sh checkSpace.shон мне выдает:

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

решение1

Если вы хотите выполнить команду sudo df ...., вам нужно использоватьзамена команды. Таким образом, замените:

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

С:

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

Что пошло не так

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

В приведенной выше команде переменной оболочки percentвременно присваивается значение sudo, а затем команда df /media/usbи ее вывод отправляются команде tail. percentне присваивается постоянное значение, а вывод конвейера отправляется в stdout.

Связанный контент