Привет всем!
Коллеги, помогите решить следующую заморочку в скриптинге. А именно:
1. Есть наутилус, который может исполнять различные скрипты из контекстного меню.
2. Настраиваю простенкий скриптик для показа слайдшоу с помощью программы feh.
#!/bin/sh
FILE_PATHS=`echo $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS | sed 's/ /\\\ /g'` | sed 's/\\\ \// \//g'`
#FILE_PATHS=$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS
DELAY=1
logger -t slideshow "feh --title Slideshow -rFx -S name -D $DELAY $FILE_PATHS"
feh --title "Slideshow" -rFx -S name -D $DELAY $FILE_PATHS
Суть скрипта проста - вызвать feh и передать ему параметрами или название каталога, в котором картинки лежат, или разделенный пробелами перечень полных имен этих самых картинок ($NAUTILUS_SCRIPT_SELECTED_FILE_PATHS). Если в этих именах нет пробелов, то всё работает без проблемно. Но как только в имени появляется пробел - feh на этом деле ожидаемо спотыкается. Фигня вопрос - экранируем пробел, то есть вместо пробела " " ставим "\ " и возвращаем "пробел" между именами файлов в первобытный вид. Это делает первая строка скрипта. Из строки feh --title Slideshow -rFx -S name -D 1 /home/alex/Изображения/FujiFilm/Зи ма/DSCF0005.JPG /home/alex/Изображения/FujiFilm/Зи ма/DSCF0006.JPG /home/alex/Изображения/FujiFilm/Зи ма/DSCF0007.jpg получаем строку feh --title Slideshow -rFx -S name -D 1 /home/alex/Изображения/FujiFilm/Зи\ ма/DSCF0005.JPG /home/alex/Изображения/FujiFilm/Зи\ ма/DSCF0006.JPG /home/alex/Изображения/FujiFilm/Зи\ ма/DSCF0007.jpg. Преобразованная строка, для контроля, пишется логгером в /val/log/messages.
Если эту преобразованную строку вызвать на исполнение прямо из терминала или по ALT+F2, из командной строки, - feh отрабатывает корректно, прекрасно понимает экранированные пробелы и показывает нужное слайдшоу. А вот если вызывать тот же feh из данного скрипта, то абсолютно ничего не происходит. Не хочет он отрабатывать в этом случае пробелы в именах.
Коллеги, подскажите, что я не так делаю?