Я делаю сценарий 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
(Я перевел его с испанского, так что, возможно, это не точный перевод). Что могло быть не так?
Ваше условие на самом деле не вызывает 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. Функции в 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