LINUX.ORG.RU

Проблемы с диалог


0

1

приветствую!

Я нуждаюсь в пинке под зад. Не могу понять. Задача вроде как бы простая, но реализовать на баше ее походу не реально. Имеется список с именами файлов. В именах есть названия с ПРОБЕЛАМИ. Теперь это все дело я пытаюсь засунуть в dialog --ckecklist. Да вот незадача.. слитные названия пихает он правильно, а файлы с пробелами криво. К примеру имеется файл.txt. идет постановка $num и в конце off. Баш считывает... [num] [filename] [off], вставляет и это все отображается в выведенном списке правильно. Теперь представим, что у нас в названии файла пробелы. К примеру называется файл - текстовый документ.txt. Баш начинает действовать. Он видит [num] далее [текстовый] потом думает, что пробел это разрыв и далее должно стоять [off] или [on]. Да вот незадача.. там такого нет, поэтому он или пропускает эту часть или видит как [off]. А теперь представим, что у нас имеются 4 файла

документ.txt текстовый документ1.txt текстовый документ2.txt текстовый документ3.txt

идет постановка и вывод получается таким:

[num] [документ.txt] [off] [num] [текстовый] [???] [num] [off] [off] [num] [текстовый] [???] [num] [off] [off] . . итд

Пробовал уже использовать кавычки, но все не помогает. А потом прочитал на одном сайте, что баш не полноценен для таких вещей.. Так есть выход или забить вообще на эту идею??


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

Забей, ты неполноценен для таких вещей.

anonymous
()
Ответ на: комментарий от anonymous

И на это спасибо. Сразу видно тролль.

djemNa
() автор топика

Имеется список

Аргументы командной строки? Файл с разделителем-переводом на новую строку? Что-то ещё?

К примеру имеется файл.txt. идет постановка $num и в конце off.

Покажите свой код.

AITap ★★★★★
()
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
cd $1
some_files=$(ls -a)
for x in  $some_files; 
do 
    if [ -d $x ]; 
        then 
            echo " #lst APPENDITEM = \"[$x]\" : "; 
        else 
            echo " #lst APPENDITEM = \"$x\" : "; 
    fi; 
done
IFS=$SAVEIFS

конечно, код в условии нужно заменить, но это скорее всего решение для тебя. http://www.cyberciti.biz/tips/handling-filenames-with-spaces-in-bash.html

ну и я пропиарюсь заодно - http://habrahabr.ru/post/155839/

rikardoac
()
Ответ на: комментарий от rikardoac

Спасибо большее! Это помогло! Я слишком трудно думал, оказалось все так просто.

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