I'gostaria de escrever um script shell que verifica se um certo arquivo, archived_sensor_data.json
, existe, e se sim, exclui-o. Seguindo http://www.cyberciti.biz/tips/find-out-if-file-exists-with-conditional-expressions.html, I'tentei o seguinte:
[-e archived_sensor_data.json] && rm archived_sensor_data.json
No entanto, isto lança um erro
[-e: command not found
quando eu tento executar o script test_controller
resultante utilizando o comando ./test_controller
. O que há de errado com o código?
Aqui está um método alternativo utilizando o ls
:
(ls x.txt && echo yes) || echo no
Se você quiser esconder qualquer saída de ls
para que você só veja sim ou não, redirecione stdout' e
stderr' para `/dev/null':
(ls x.txt >> /dev/null 2>&1 && echo yes) || echo no
Internamente, o comando rm deve testar a existência do arquivo de qualquer maneira, então porquê adicionar outro teste? Basta emitir
rm filename
e depois disso desaparecerá, quer estivesse lá ou não.
Use rm -f é você não'não quer nenhuma mensagem sobre arquivos inexistentes.
Se você precisar tomar alguma medida se o arquivo NÃO existir, então você mesmo deve testar para isso. Com base no seu código de exemplo, este não é o caso neste caso.