$fileたとえば、ファイル名の値を保持していると仮定しますDr' A.tif。bashプログラミングで、特殊文字$fileを削除せずに、単一引用符やその他の特殊文字をエスケープするにはどうすればよいですか?
2014年7月9日に更新
@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
これを処理する方法はありますか?