Załóżmy, że $filetrzymasz wartość nazwy pliku, powiedzmy Dr' A.tif. W programowaniu bash, jak mogę uniknąć pojedynczego cudzysłowu i innych znaków specjalnych $filebez usuwania znaku specjalnego?
Aktualizacja w dniu 9 lipca 2014 r
Na żądanie @Gilles następujący fragment kodu, który nie jest w stanie obsłużyć 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}
Po Próbowałem się na odpowiedź od @Patrick na line 1, wydaje się pracować dla mnie. Ale jeśli mam taki plik Dr\^s A.tif, printfpolecenie nie wydaje się pomocne, pokazuje mi Dr\^s\ A.tif. Jeśli ręcznie wypróbuję to na konsoli:
printf "%q" "Dr\^s A.tif"
Będę miał ten wynik:
Dr\\\^s\ A.tif
Masz pomysł, jak sobie z tym poradzić?