Supposons $fileque la valeur d'un nom de fichier soit conservée, par exemple Dr' A.tif. Dans la programmation bash, comment pourrais-je échapper aux guillemets simples et à tout autre caractère spécial du $filesans supprimer le caractère spécial?
Mise à jour du 9 juillet 2014
À la demande de @Gilles , extrait de code suivant qui ne peut pas gérer 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}
Après avoir essayé la réponse de @Patrick sur line 1, il semble fonctionner pour moi. Mais si j'ai un fichier tel que Dr\^s A.tif, la printfcommande ne semble pas aider, elle me le montre Dr\^s\ A.tif. Si je l'essaye manuellement sur la console comme ceci:
printf "%q" "Dr\^s A.tif"
J'aurai cette sortie:
Dr\\\^s\ A.tif
Une idée de comment gérer ça?