Me gustaría escribir un script de shell que compruebe si un determinado archivo, archived_sensor_data.json
, existe, y si es así, lo elimine. Siguiendo http://www.cyberciti.biz/tips/find-out-if-file-exists-with-conditional-expressions.html, he probado lo siguiente:
[-e archived_sensor_data.json] && rm archived_sensor_data.json
Sin embargo, esto arroja un error
[-e: command not found
cuando intento ejecutar el script resultante test_controller
utilizando el comando ./test_controller
. ¿Qué es lo que falla en el código?
He aquí un método alternativo utilizando ls
:
(ls x.txt && echo yes) || echo no
Si quieres ocultar cualquier salida de ls
para que sólo veas si o no, redirige stdout
y stderr
a /dev/null
:
(ls x.txt >> /dev/null 2>&1 && echo yes) || echo no
Internamente, el comando rm debe comprobar la existencia del archivo de todos modos, así que ¿por qué añadir otra prueba? Basta con emitir
rm filename
y desaparecerá después de eso, tanto si estaba allí como si no.
Utilice rm -f si no quiere recibir mensajes sobre archivos inexistentes.
Si necesita tomar alguna acción si el archivo NO existe, entonces debe comprobarlo usted mismo. Basado en su código de ejemplo, este no es el caso en esta instancia.