Belirli bir dosyanın (archived_sensor_data.json
) var olup olmadığını kontrol eden ve varsa silen bir kabuk betiği yazmak istiyorum. http://www.cyberciti.biz/tips/find-out-if-file-exists-with-conditional-expressions.html adresini takip ederek aşağıdakileri denedim:
[-e archived_sensor_data.json] && rm archived_sensor_data.json
Ancak, bu bir hata veriyor
[-e: command not found
./test_controllerkomutunu kullanarak ortaya çıkan
test_controller` betiğini çalıştırmayı denediğimde. Kodda yanlış olan ne?
İşte ls
kullanan alternatif bir yöntem:
(ls x.txt && echo yes) || echo no
Eğer ls
çıktısını gizlemek ve sadece yes ya da no görmek istiyorsanız, stdout
ve stderr
çıktılarını /dev/null
adresine yönlendirin:
(ls x.txt >> /dev/null 2>&1 && echo yes) || echo no
Dahili olarak, rm komutu her halükarda dosyanın varlığını test etmelidir, Öyleyse neden başka bir test ekleyelim? Sadece sorun
rm filename
ve ondan sonra, orada olsa da olmasa da yok olacak.
Var olmayan dosyalar hakkında herhangi bir mesaj istemiyorsanız rm -f kullanın.
Dosya mevcut DEĞİLSE bir işlem yapmanız gerekiyorsa, bunu kendiniz test etmelisiniz. Örnek kodunuza göre, bu durumda böyle bir durum söz konusu değildir.