Jawaban:
Jangan repot-repot memeriksa apakah file itu ada, coba hapus saja.
rm -f /p/a/t/h
# or
rm /p/a/t/h 2> /dev/null
Perhatikan bahwa perintah kedua akan gagal (mengembalikan status keluar bukan nol) jika file tidak ada, tetapi yang pertama akan berhasil karena opsi -f(kependekan --force). Tergantung pada situasinya, ini mungkin detail penting.
Tetapi lebih mungkin, jika Anda menambahkan ke file itu karena skrip Anda menggunakan >>untuk mengarahkan sesuatu ke file. Ganti saja >>dengan >. Sulit dikatakan karena Anda tidak memberikan kode.
Perhatikan bahwa Anda dapat melakukan sesuatu seperti test -f /p/a/t/h && rm /p/a/t/h, tetapi melakukannya sama sekali tidak ada gunanya. Sangat mungkin bahwa tes akan mengembalikan true tetapi / p / a / t / h akan gagal ada sebelum Anda mencoba untuk menghapusnya, atau lebih buruk tes akan gagal dan / p / a / t / h akan dibuat sebelum Anda menjalankan perintah berikutnya yang mengharapkannya tidak ada. Mencoba ini adalah kondisi balapan klasik. Jangan lakukan itu.
rm /p/a/t/h 2> /dev/nulltidak akan menyimpan kode pengembalian ( echo $?) sebagai 0 jika file tidak ada. Itu akan membuat Jenkins jenis pekerjaan gagal hanya karena kami mencoba menghapus file yang tidak ada.
noclobberdi bash), atau mungkin chmod-ing file yang masih ada sehingga pengalihan gagal jika file ada (tidak menghindari kondisi balapan), tetapi semua yang akan dilakukan adalah membuat bug lebih halus.
Satu perintah baris lain yang saya gunakan adalah:
[ -e file ] && rm file
Anda bisa menggunakan ini:
#!/bin/bash
file="file_you_want_to_delete"
if [ -f $file ] ; then
rm $file
fi
echo $?tidak memberikan 1 jika file tidak ada.
Jika Anda ingin mengabaikan langkah untuk memeriksa apakah file ada atau tidak, maka Anda dapat menggunakan perintah yang cukup mudah, yang akan menghapus file jika ada dan tidak membuang kesalahan jika tidak ada.
rm -f xyz.csv
-fitu tidak akan menimbulkan kesalahan. Jawaban ini membantu saya, terima kasih.
Sesuatu seperti ini akan berhasil
#!/bin/sh
if [ -fe FILE ]
then
rm FILE
fi
-memeriksa apakah ini file biasa
-e memeriksa apakah file ada
Pengantar jika untuk informasi lebih lanjut
EDIT: -e digunakan dengan -f berlebihan, untuk menggunakan -f saja harus bekerja juga
-asudah usang, gunakan -esaja.
-f.
-edi -feberlebihan, seperti -fjuga cek keberadaan file sejauh yang saya tahu ..
if [ $( ls <file> ) ]; then rm <file>; fi
Juga, jika Anda mengarahkan output Anda dengan >alih - alih >>itu akan menimpa file sebelumnya
filemirip5 -lt 2
rm $my_file, kan? Shell apa yang Anda gunakan?