Скажімо, $file
утримуючи значення імені файлу, скажімо Dr' A.tif
. Як баш програмування, як я можу уникнути однієї цитати та будь-якого іншого спеціального символу $file
без усунення спеціального символу?
Оновлення 9 липня 2014 року
Як запит від @Gilles , наступний фрагмент коду, який не вдається обробити 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}
Після того, як я випробував в відповідь від @Patrick на line 1
, здається, працює для мене. Але якщо у мене є такий файл, як Dr\^s A.tif
, printf
команда, здається, не допомагає, він мені показує Dr\^s\ A.tif
. Якщо я вручну спробую це на консолі так:
printf "%q" "Dr\^s A.tif"
У мене буде такий вихід:
Dr\\\^s\ A.tif
Будь-яка ідея, як впоратися з цим?