Почему этот скрипт не работает?

Я делаю скрипт bash, который проверяет доступное место на диске:

if [ check_space -gt "85" ]; then
echo "removing"
else
echo "not removing"
fi

check_space возвращает число как 52 и check_space функция:

check_space() {
df /dev/sda1 | tail -1 | awk '{print $5}' | sed 's/%//';
}

Это возвращается ./backup.sh: line 63: [: check_space: a full expression was expected (Я перевел это с испанского, так что, возможно, не точный перевод). Что может быть не так?

3 ответа

Решение

Ваше состояние на самом деле не вызывает check_space, вам нужно что-то вроде:

if [ `check_space` -gt "85" ]; then

Вот как вы можете это сделать...

#!/bin/bash

CHECK_SPACE=`df /dev/sda1 | tail -1 | awk '{print $5}' | sed 's/%//'`;

if [ $CHECK_SPACE -gt "85" ]; then
echo "removing"
else
echo "not removing"
fi

Я должен был вытащить мою шпаргалку. Функции в bash не могут возвращать значение, только статус выхода.

"85" с кавычками - это строка, а не число... -gt не будет работать.

предложить:

CHECK_SPACE=$(df -P /dev/sda1 | awk '$1=="/dev/sda1"{sub("%","");print $5}')

if [ $CHECK_SPACE -gt 85 ]; then
  echo "removing"
else
  echo "not removing"
fi
Другие вопросы по тегам