Vorrei scrivere uno script di shell che controlli se un certo file, archived_sensor_data.json
, esiste, e se sì, lo elimina. Seguendo http://www.cyberciti.biz/tips/find-out-if-file-exists-with-conditional-expressions.html, ho provato quanto segue:
[-e archived_sensor_data.json] && rm archived_sensor_data.json
Tuttavia, questo lancia un errore
[-e: command not found
quando cerco di eseguire lo script test_controller
risultante usando il comando ./test_controller
. Cosa c'è di sbagliato nel codice?
Ecco un metodo alternativo che usa ls
:
(ls x.txt && echo yes) || echo no
Se si vuole nascondere qualsiasi output da ls
in modo da vedere solo sì o no, reindirizzare stdout
e stderr
a /dev/null
:
(ls x.txt >> /dev/null 2>&1 && echo yes) || echo no
Internamente, il comando rm deve comunque testare l'esistenza del file, quindi perché aggiungere un altro test? Basta emettere
rm filename
e dopo sarà sparito, che ci fosse o meno.
Usate rm -f se non volete messaggi su file inesistenti.
Se avete bisogno di intraprendere qualche azione se il file NON esiste, allora dovete testare voi stessi per questo. Sulla base del tuo codice di esempio, questo non è il caso in questo caso.