मान लें कि $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
किसी भी विचार यह कैसे संभालना है?