[: -gt: operador unário esperado

1

Eu tenho um código, que dá [: -gt: unary operator expected , quando o valor está vazio.

Alguém pode sugerir ou corrigir-me onde estou errado?

if [ -e $POSFile ]; then 
  # Read last Position
  lastPosition='cat $POSFile'
fi
fileLength='stat -c %s $LogFile'

if [ $lastPosition -gt $fileLength ]; then
  # Log file rolled
  lastPosition=0
fi

difference='expr $fileLength - $lastPosition'
    
por user324391 16.02.2015 / 07:02

1 resposta

1

Existe a possibilidade de que, ao alcançar essa lógica:

if [ $lastPosition -gt $fileLength ]

$lastPosition ou $fileLength estarão vazios:

  • $lastPosition pode estar vazio se $POSFile não existir ou não puder ser lido.
  • $fileLength pode estar vazio se $LogFile não existir ou não puder ser lido.

Tente usar citações como esta:

if [ "$lastPosition" -gt "$fileLength" ]

para forçar cada uma dessas variáveis a ser reconhecida como uma entidade única, mesmo que estivesse vazia. Variáveis vazias serão contadas como zero neste caso (ou seja, emparelhadas com o operador "maior que").

Nota: Esta solução proposta não cobre a possibilidade se qualquer variável for reconhecida como não-número.

    
por 28.02.2015 / 01:47