LINUX.ORG.RU

как экранировать пробел?


0

0

если в бэше сказать
# find $dir -name *[A-Z]* | sed 's/\ /\\ /g'
то получается красивая картинка с экранированными пробелами.
/home/ed2k/temp/Femme\ Fatale\ ShareReactor.ru.avi
/home/ed2k/temp/Ghost\ World\ ShareReactor.ru.avi
/home/ed2k/temp/Chelsea\ Walls\ ShareReactor.ru.avi
если же написать скрипт

#!/bin/bash
for file in `find $dir -name *[A-Z]* | sed 's/\ /\\ /g'` ; do
echo $file
done

то он выдаст
/home/ed2k/temp/Femme
Fatale
ShareReactor.ru.avi
/home/ed2k/temp/Ghost
World
ShareReactor.ru.avi
/home/ed2k/temp/Chelsea
Walls
ShareReactor.ru.avi

и с этим в цикле нельзя работать, так как файл оказывается кучей переменных. как это можно победить?

anonymous

find $dir -name *[A-Z]* |while read xxx;do echo $xxx;done

anonymous
()

просто по умолчанию IFS=" "
поменяй на 
IFS="
"
затем запусти свой скрипт.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.