Erro de expressão no script bash

0

Estou recebendo este erro muito estranho, apesar do fato de que o mesmo script roda bem em uma plataforma (Arch linux), mas não na minha outra plataforma móvel (Maemo Linux). Vou passar aqui a parte relevante do código com a numeração da linha:

41 for DIR in $DIRS
42 do
43 tempdir=$DIR/
44 tempval=$(stat -c %Y $tempdir)
45 echo $tempval
46 if (( $tempval > $(date +%s) - 3600*24*30 )); then
47     echo "I am done basically. Exiting..."
48     exit
49 else
50     continue
51 fi
52 done

No código acima, DIRS é uma lista que contém nomes de diretórios. Neste loop eu estou tentando encontrar um diretório da lista que é mais recente do que 30 dias e se eu encontrar um eu sair do script.

A linha 45 é colocada lá basicamente para fins de depuração.

Estou recebendo o erro abaixo:

./script.sh : line 52 : 1372757584 : not found

Após algumas alterações sugeridas nos comentários:

Ok, o erro agora está abaixo:

scone.sh: line 46: ((: 1372768246 -gt 1372770593 - 3600*24*30 : syntax error
in expression (error token is "1372770593 - 3600*24*30 ")
    
por Vaios Argiropoulos 02.07.2013 / 13:21

1 resposta

1

Eu realmente fiz as alterações sugeridas pelos 3 caras nos comentários e todos eles foram necessários para o script funcionar.

Código final abaixo:

temptime=$(date +%s)
temptime='expr $temptime - 2592000'

for DIR in $DIRS
do
tempdir=$DIR/
echo $tempdir
tempval=$(stat -c %Y $tempdir)
echo $tempval
if [[ $tempval -gt $temptime ]]; then
    echo "Exiting gracefully!!!"
    exit
else
    continue
fi
done
    
por 02.07.2013 / 18:27