LINUX.ORG.RU

[Bash] Не соображу

 


0

1

Есть код:

for file in *
do
    ls ${file}
    list="${list} ${file}"
done

Так я получаю список файлов в дирректории.

Дальше я подсовываю все это в dialog:

$DIALOG --title "Выберете файл" --radiolist "" 20 51 4 \
    ${list} 2> ${tempfile}

Так вот, radiolist должен быть с такими параметрами:

<text> <height> <width> <list height> <tag1> <item1> <status1>

Естественно мне так не нужно, как можно обработать ${list}, что бы при подстановке в dialog, на каждую линию был только один файл, а парамерты <tag1> и <status1> принимали другие значения?

★★★

Надо как-то парсить ${list} и приводить его к такому вида

<tag1> имя_файла_котрое_получаю_в_цикле <status1>

вместо <tag1> и <status1> можно подставить любое значение, без разницы какой.

SAA ★★★
() автор топика
i=0
for file in *; do
    list="$list $i $file off"
    ((i++))
done

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

echo -n > /tmp/filelist
i=0
for file in *; do
    echo "$i \"$file\" off" >> /tmp/filelist
    ((i++))
done

...


$DIALOG --title "Выберете файл" --radiolist "" 20 51 4 \
    --file /tmp/filelist 2> ${tempfile}
ananas ★★★★★
()
Ответ на: комментарий от ananas

Спасибо, только вот сейчас обнаружил, если после

for file in *
do
    ls ${file}
    list="${list} ${file}"
done

сделать cat $list, то почему-то выводится содержимое файлов, которые находятся в дирректории, почему так?

SAA ★★★
() автор топика
Ответ на: комментарий от SAA

> сделать cat $list, то почему-то выводится содержимое файлов, которые находятся в дирректории, почему так?

потому что bash раскатывает $list в список файлов. хочешь увидеть сам list - делай echo $list

ananas ★★★★★
()

> «Выберете файл»

Чтобы пользователи были в хорошем настроении, пиши «Выберите файл» (от слова «выбери»).

unC0Rr ★★★★★
()
Ответ на: комментарий от ananas

Понял, еще раз спасибо.

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