Kā pārbaudīt, vai fails eksistē čaulas skripta programmā

Es gribētu uzrakstīt čaulas skriptu, kas pārbauda, vai pastāv noteikts fails archived_sensor_data.json, un, ja pastāv, izdzēš to. Pēc http://www.cyberciti.biz/tips/find-out-if-file-exists-with-conditional-expressions.html, es esmu izmēģinājis šādus variantus:

[-e archived_sensor_data.json] && rm archived_sensor_data.json

Tomēr tas izmet kļūdu

[-e: command not found

kad mēģinu palaist iegūto test_controller skriptu, izmantojot ./test_controller komandu. Kas ar šo kodu nav kārtībā?

Risinājums

Starp iekavām un -e trūkst nepieciešamās atstarpes:

#!/bin/bash
if [ -e x.txt ]
then
    echo "ok"
else
    echo "nok"
fi
Komentāri (4)

Šeit ir alternatīva metode, izmantojot ls:

(ls x.txt && echo yes) || echo no

Ja vēlaties paslēpt jebkuru izvades rezultātu no ls, lai redzētu tikai jā vai nē, pāradresējiet stdout un stderr uz /dev/null:

(ls x.txt >> /dev/null 2>&1 && echo yes) || echo no
Komentāri (1)

Iekšēji komandai rm jebkurā gadījumā ir jāpārbauda, vai fails pastāv, tad kāpēc pievienot vēl vienu testu? Vienkārši izdodiet

rm filename

un pēc tam tā vairs nebūs, neatkarīgi no tā, vai tā tur bija vai nebija.
Izmantojiet rm -f, ja nevēlaties saņemt ziņojumus par neesošiem failiem.

Ja jums ir jāveic kāda darbība, ja fails NEeksistē, tad jums tas ir jāpārbauda pašiem. Pamatojoties uz jūsu piemēra kodu, šajā gadījumā tas tā nav.

Komentāri (3)