Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: [решено] bash, как правильно экранировать пробелы  (Прочитано 6485 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Disaster1986

  • Автор темы
  • Участник
  • *
  • Сообщений: 246
  • Что делает эта кнопка?
    • Просмотр профиля
Имеется примерно такой скрипт:
(Нажмите, чтобы показать/скрыть)
скрипт должен получать путь к папке назначения, путь к исходной папке и список файлов в ней, а затем рекурсивно копировать их в папку назначения, попутно выводя сообщения о копируемом файле на стандартный вывод и спрашивая, заменять ли уже присутствующий файл, через zenity. Работает оно хорошо, но только до тех пор, пока в именах файлов не начнут появляться пробелы. Пробовал закрывать их с обеих сторон кавычками, заменял все " " на "\ " - бесполезно. Как решить эту проблему?

ps Также меня интересуют другие возможные варианты решения исходной задачи, которая заключается в добавлении в контекстное меню наутилуса нового пункта - отправки файла/папки на флешку. Просто cp здесь не особо поможет - нужно как минимум уведомление о том, что файл существует, а ещё лучше - прогресс-бар
« Последнее редактирование: 25 Марта 2011, 20:33:46 от Disaster1986 »

Оффлайн aliftin

  • Старожил
  • *
  • Сообщений: 1398
    • Просмотр профиля
Re: bash, как правильно экранировать пробелы
« Ответ #1 : 25 Марта 2011, 18:15:11 »
Есть такая переменная $IFS. Как вы ее зададите, такой и будет разделитель. В вашем случае нужно добавить в начала скрипта строку:
IFS=$'\n'
Если мы не можем до чего то дотянуться, мы виним в этом не свой рост, не отсутствие табуретки, а свою цель.

Оффлайн Disaster1986

  • Автор темы
  • Участник
  • *
  • Сообщений: 246
  • Что делает эта кнопка?
    • Просмотр профиля
Re: bash, как правильно экранировать пробелы
« Ответ #2 : 25 Марта 2011, 20:33:33 »
Огромное спасибо, буду знать. Теперь всё работает

 

Страница сгенерирована за 0.052 секунд. Запросов: 25.