Capture Error do LS para o arquivo [duplicado]

0
#!/bin/sh

if [ $(ls sample01.log | wc -l) = 1 ]
then
echo "File Found" > lsOutput.log
else
echo "File Not Found" > lsOutput.log
fi

Mas se sample01.log ainda não existir, meu código já retorna o erro:

ls: cannot access sample01.log: No such file or directory

E o código não será mais executado. O arquivo não encontrado não será mais exibido. Eu queria capturar esse erro para o arquivo (Nenhum tal arquivo ou diretório) para cada vez que tal erro ocorre, ele é escrito e documentado no arquivo de log.

Obrigado.

    
por user60216 01.03.2014 / 06:14

1 resposta

3

Você não precisa analisar ls para determinar se existe um arquivo.

help test diria a você:

  -e FILE        True if file exists.

Você poderia dizer:

if [ -e sample01.log ]
then
  echo "File Found" > lsOutput.log
else
  echo "File Not Found" > lsOutput.log
fi

Se você quiser garantir que o arquivo seja normal, use -f :

  -f FILE        True if file exists and is a regular file.

(O que você fez também funciona, mas faz com que ls emita uma mensagem de erro (para STDERR ), o que talvez o leve a pensar que não funciona.)

    
por 01.03.2014 / 06:35