Suponiendo que $file
tiene un valor de un nombre de archivo, por ejemplo Dr' A.tif
. En la programación de bash, ¿cómo podría escapar de la comilla simple y de cualquier otro carácter especial $file
sin eliminar el carácter especial?
Actualización el 9 de julio de 2014
Como solicitud de @Gilles , siguiendo el fragmento de código que no puede manejar 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}
Después he probado la respuesta de @Patrick en line 1
, parece que funciona para mí. Pero si tengo un archivo como Dr\^s A.tif
, el printf
comando no parece ayudar, me lo muestra Dr\^s\ A.tif
. Si lo pruebo manualmente en la consola de esta manera:
printf "%q" "Dr\^s A.tif"
Tendré esta salida:
Dr\\\^s\ A.tif
¿Alguna idea de cómo manejar esto?