Supponendo che $filedetenga un valore di un nome file, diciamo Dr' A.tif. Nella programmazione bash, come potrei evitare la virgoletta singola e qualsiasi altro carattere speciale $filesenza rimuovere il carattere speciale?
Aggiornamento del 9 luglio 2014
Come richiesto da @Gilles , il seguente frammento di codice che non è in grado di gestire 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}
Dopo aver provato la risposta da @Patrick in poi line 1, sembra funzionare per me. Ma se ho file come Dr\^s A.tif, il printfcomando non sembra aiutare, mi mostra Dr\^s\ A.tif. Se lo provo manualmente su console in questo modo:
printf "%q" "Dr\^s A.tif"
Avrò questo output:
Dr\\\^s\ A.tif
Qualche idea su come gestirlo?