Страница 1 из 1

Программирование на bash

Добавлено: 07 май 2016, 01:07
khach
Есть такая задача: Создать командный файл, который по команде read запрашивает имя каталога и выдает его полное содержимое.
Мой алгоритм решения этой задачи такой:
1) находим все одноименные каталоги
2) записываем пути к этим папкам как массив строк
3) поочередно просматриваем их содержимое
Пока что написал вот это:

Код: Выделить всё

#!/bin/bash
echo "Задайте имя каталога : "
read catalog
echo
find / -name $catalog -type d
exit 0

Результат такой Изображение
Теперь не знаю, как превратить, то, что выдано на экран, в массив из строк, чтобы потом с помощью команды ls -a посмотреть содержание каждой строки (папки).
Буду признателен любой конструктивной подсказке.

Re: Программирование на bash

Добавлено: 07 май 2016, 11:06
Olej
khach писал(а): Теперь не знаю, как превратить, то, что выдано на экран, в массив из строк, чтобы потом с помощью команды ls -a посмотреть содержание каждой строки (папки).
Не нужен вам никакой массив!
Вам нужен элементарный список требуемых путей (имён), по которому потом нужно пройтись циклом.
Вот вам ваш упрощённый пример (ввод имени мне лень делать, и ищем каталоги начиная с $HOME, иначе их слишком много, да и права чтения мешают):

Код: Выделить всё

[olej@localhost find]$ cat fnd.
#!/bin/sh

CATALOG=tmp
SUBS=`find $HOME -name $CATALOG -type d`

for DIR in $SUBS
   do
      echo '-----> ' $DIR
      ls $DIR
   done

Код: Выделить всё

[olej@localhost find]$ sh fnd.
----->  /home/olej/.config/libreoffice/4/user/extensions/tmp
extensions  registry
----->  /home/olej/2016_WORK/WORK/Linux.kernel/fuse/tmp
----->  /home/olej/.AndroidStudio2.0/system/tmp
jna-3413826
Так, получением списка файлов с последующим проходом по нему циклом, делается в большинстве подобных случаев.

P.S. В shell скриптах имена переменных часто записывают заглавными (большими) буквами ... так (на первое время, по крайней мере) оно будет понятнее.

P.P.S. Вот здесь вам все конструкции bash с примерами (и те которые вас интересуют) - где их можно просто в готовом виде списать ;-) :
Искусство программирования на языке сценариев командной оболочки

Re: Программирование на bash

Добавлено: 07 май 2016, 11:24
khach
Спасибо.

Re: Программирование на bash

Добавлено: 07 май 2016, 11:49
Lepton
С подтверждением выполнения команды "ls -a" (y - да, n - нет)

Код: Выделить всё

#!/bin/bash
echo "Задайте имя каталога : "
read catalog
echo
find / -name $catalog -type d -ok ls -a '{}' ';'
exit 0

Re: Программирование на bash

Добавлено: 07 май 2016, 12:21
khach
Lepton писал(а):С подтверждением выполнения команды "ls -a" (y - да, n - нет)
Спасибо большое.