Dengan asumsi $file
memegang nilai nama file, katakanlah Dr' A.tif
. Dalam pemrograman bash, bagaimana saya bisa lolos dari kutipan tunggal dan karakter khusus lainnya $file
tanpa menghilangkan karakter khusus?
Pembaruan pada 9 Juli 2014
Sebagai permintaan dari @Gilles , cuplikan kode berikut ini yang tidak dapat menangani Dr' A.tif
:
files=$(find /path/ -maxdepth 1 -name "*.[Pp][Dd][Ff]" -o -name "*.[Tt][Ii][Ff]")
echo "${files}" > ${TEMP_FILE}
while read file
do
newfile=$(echo "${file}" | sed 's, ,\\ ,g') ## line 1
done < ${TEMP_FILE}
Setelah saya mencoba jawaban dari @Patrick pada line 1
, sepertinya berhasil untuk saya. Tetapi jika saya memiliki file seperti itu Dr\^s A.tif
, printf
perintah sepertinya tidak membantu, itu menunjukkan kepada saya Dr\^s\ A.tif
. Jika saya mencobanya secara manual di konsol seperti ini:
printf "%q" "Dr\^s A.tif"
Saya akan mendapatkan hasil ini:
Dr\\\^s\ A.tif
Adakah cara menangani ini?