Por que esse script não está funcionando?

1

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?

    
por pmerino 23.08.2011 / 15:47

3 respostas

10

Sua condição não está realmente chamando check_space, você precisa de algo como:

if [ 'check_space' -gt "85" ]; then
    
por 23.08.2011 / 16:01
1

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.

    
por 23.08.2011 / 16:18
0

"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
    
por 19.04.2017 / 23:30