Jeg vil gjerne skrive et shell-skript som sjekker om en bestemt fil, archived_sensor_data.json
, eksisterer, og i så fall sletter den. Etter http://www.cyberciti.biz/tips/find-out-if-file-exists-with-conditional-expressions.html har jeg prøvd følgende:
[-e archived_sensor_data.json] && rm archived_sensor_data.json
Dette gir imidlertid en feil
[-e: command not found
når jeg prøver å kjøre det resulterende test_controller
-skriptet ved hjelp av kommandoen ./test_controller
. Hva er galt med koden?
Her er en alternativ metode som bruker ls
:
(ls x.txt && echo yes) || echo no
Hvis du vil skjule utdata fra ls
slik at du bare ser yes eller no, omdirigerer du stdout
og stderr
til /dev/null
:
(ls x.txt >> /dev/null 2>&1 && echo yes) || echo no
Internt må rm-kommandoen uansett teste for filens eksistens, så hvorfor legge til en annen test? Bare utsted
rm filename
og det vil være borte etter det, enten det var der eller ikke.
Bruk rm -f hvis du ikke vil ha noen meldinger om ikke-eksisterende filer.
Hvis du trenger å gjøre noe hvis filen IKKE finnes, må du teste for det selv. Basert på eksempelkoden din er dette ikke tilfelle i dette tilfellet.