J'aimerais écrire un script shell qui vérifie si un certain fichier, archived_sensor_data.json
, existe, et si oui, le supprime. En suivant http://www.cyberciti.biz/tips/find-out-if-file-exists-with-conditional-expressions.html, j'ai essayé ce qui suit :
[-e archived_sensor_data.json] && rm archived_sensor_data.json
Cependant, cela génère une erreur
[-e: command not found
lorsque j'essaie d'exécuter le script test_controller
résultant en utilisant la commande ./test_controller
. Quel est le problème avec ce code ?
Voici une méthode alternative utilisant ls
:
(ls x.txt && echo yes) || echo no
Si vous voulez cacher toute sortie de ls
pour ne voir que yes ou no, redirigez stdout
et stderr
vers /dev/null
:
(ls x.txt >> /dev/null 2>&1 && echo yes) || echo no
En interne, la commande rm doit de toute façon tester l'existence du fichier, alors pourquoi ajouter un autre test ? Il suffit d'émettre
rm filename
et il disparaîtra après cela, qu'il ait été là ou non.
Utilisez rm -f si vous ne voulez pas de messages sur des fichiers inexistants.
Si vous devez prendre des mesures si le fichier n'existe PAS, vous devez le vérifier vous-même. D'après votre exemple de code, ce n'est pas le cas ici.