Sua condição não está realmente chamando check_space, você precisa de algo como:
if [ 'check_space' -gt "85" ]; then
Estou fazendo um script bash que verifica o espaço disponível no disco:
if [ check_space -gt "85" ]; then
echo "removing"
else
echo "not removing"
fi
check_space
retorna um número como 52
e a função check_space
é:
check_space() {
df /dev/sda1 | tail -1 | awk '{print $5}' | sed 's/%//';
}
Ele está retornando ./backup.sh: line 63: [: check_space: a full expression was expected
(traduzi do espanhol para que talvez não seja uma tradução exata). O que poderia estar errado?
Veja como você pode fazer isso ...
#!/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
Eu tive que puxar minha folha de cola. Funções no bash não podem retornar um valor, apenas um status de saída.
"85" com as aspas é uma string, não um número ... -gt não funciona.
sugerir:
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