Dengan asumsi $filememegang nilai nama file, katakanlah Dr' A.tif. Dalam pemrograman bash, bagaimana saya bisa lolos dari kutipan tunggal dan karakter khusus lainnya $filetanpa 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, printfperintah 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?