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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Помогите написать sh скрипт с применением циклов.  (Прочитано 887 раз)

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

Оффлайн BarShadow

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Всем привет. Перейду сразу к делу.
Дано: каталог с музыкой Аудио/New/ в котором находится музыка, формат имени которой вот такой:
'0050. Ночь (Александр Иванов).mp3'                 
Нужно прочесть содержимое всего каталога и записать в файл newMusicPlaylist.php так, чтобы формат каждой строки был следующим:
Код: (html5) [Выделить]
<li><a href="Аудио/New/0050. Ночь (Александр Иванов).mp3">Ночь (Александр Иванов)</a></li>
Две переменные для вывода я придумал как получить:
#!/bin/sh
Path=`find Аудио/New/ | grep .mp3 | sort | head -n 1`
Name=`find Аудио/New/ | grep .mp3 | sort | cut -c 22- | rev | cut -c 5- | rev | head -n 1`


echo "<li><a href=\"${Path}\">${Name}</a></li>"
Написал пока скрипт для первой строки вывода, но надо чтобы то-же самое делалось для всего каталога. Ясно что это надо делать через цикл, но я пока не освоил циклы.
В конечном итоге мне надо получить вот такой файл:
Код: (html5) [Выделить]
<li><a href="Аудио/New/0050. Ночь (Александр Иванов).mp3">Ночь (Александр Иванов)</a></li>
<li><a href="Аудио/New/0100. Дикие гитары (Дубы-колдуны).mp3">Дикие гитары (Дубы-колдуны)</a></li>
<li><a href="Аудио/New/0150. Московская осень (Александр Иванов).mp3">Московская осень (Александр Иванов)</a></li>
<li><a href="Аудио/New/0200. Ракенролл одиночества (Истинный Облик).mp3">Ракенролл одиночества (Истинный Облик)</a></li>
<li><a href="Аудио/New/0250. Мечты (Александр Иванов).mp3">Мечты (Александр Иванов)</a></li>
<li><a href="Аудио/New/0300. Прялица (Истинный Облик).mp3">Прялица (Истинный Облик)</a></li>
<li><a href="Аудио/New/0350. Жаль (Александр Иванов).mp3">Жаль (Александр Иванов)</a></li>
<li><a href="Аудио/New/0400. Обойду стороной (Истинный Облик).mp3">Обойду стороной (Истинный Облик)</a></li>
<li><a href="Аудио/New/0450. Дождь (Александр Иванов).mp3">Дождь (Александр Иванов)</a></li>
<li><a href="Аудио/New/0500. Верь мне (Истинный Облик).mp3">Верь мне (Истинный Облик)</a></li>
<li><a href="Аудио/New/0550. Бледный бармен (Александр Иванов).mp3">Бледный бармен (Александр Иванов)</a></li>
<li><a href="Аудио/New/0600. Уметь прощать (Ключевая).mp3">Уметь прощать (Ключевая)</a></li>
<li><a href="Аудио/New/0650. Здравствуй, день (Истинный Облик).mp3">Здравствуй, день (Истинный Облик)</a></li>
<li><a href="Аудио/New/0700. Надо было (Истинный Облик).mp3">Надо было (Истинный Облик)</a></li>
<li><a href="Аудио/New/0750. Шо такое любоффь (Истинный Облик).mp3">Шо такое любоффь (Истинный Облик)</a></li>
<li><a href="Аудио/New/0800. Гимн строителя (Истинный Облик).mp3">Гимн строителя (Истинный Облик)</a></li>
<li><a href="Аудио/New/0850. Как проходит одиночество (Ундервуд).mp3">Как проходит одиночество (Ундервуд)</a></li>
<li><a href="Аудио/New/0900. Под острым углом (Ундервуд).mp3">Под острым углом (Ундервуд)</a></li>
<li><a href="Аудио/New/0950. Ракеты на Марс (Ундервуд).mp3">Ракеты на Марс (Ундервуд)</a></li>
<li><a href="Аудио/New/1000. Смерч (Lumen).mp3">Смерч (Lumen)</a></li>
<li><a href="Аудио/New/1050. Электричество (Lumen).mp3">Электричество (Lumen)</a></li>
<li><a href="Аудио/New/1100. Не дай ему уйти (Максим Леонидов).mp3">Не дай ему уйти (Максим Леонидов)</a></li>
<li><a href="Аудио/New/1150. Реченька (Анна Пингина).mp3">Реченька (Анна Пингина)</a></li>
<li><a href="Аудио/New/1200. 52 герца (Мураками).mp3">52 герца (Мураками)</a></li>
<li><a href="Аудио/New/1250. Знамя (Мураками).mp3">Знамя (Мураками)</a></li>
<li><a href="Аудио/New/1300. Никто не придёт (Мураками).mp3">Никто не придёт (Мураками)</a></li>

Пользователь добавил сообщение 03 Октября 2020, 08:28:33:
Попробовал разобраться с циклами. Промежуточный результат вот такой:
#!/bin/sh
rm newMusicPlaylist.php
for file in Аудио/New/*
do
echo "<li><a href=\"${file}\">${file}</a></li>" >> newMusicPlaylist.php
done
(Нажмите, чтобы показать/скрыть)



В принципе - уже рабочий вариант. Надо только понять как убрать путь к файлу и расширение в inner.li
« Последнее редактирование: 03 Октября 2020, 08:28:33 от BarShadow »

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 6690
  • 20% Cooler
    • Просмотр профиля
Код: (bash) [Выделить]
#!/bin/bash
rm newMusicPlaylist.php
for file in Аудио/New/*
do
filename=$(basename -- "$file")
echo "<li><a href=\"${file}\">${filename%.*}</a></li>" >> newMusicPlaylist.php
done
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн BarShadow

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Спасибо большое. Это именно то, что мне надо было.
Осталось придумать как реализовать запуск этого скрипта каждый раз, когда в каталоге изменяется содержимое. Это, вроде бы, не трудно. Можно через inotifywait попробовать сделать.

Оффлайн Malamut

  • Ubuntu Member
  • Администратор
  • Старожил
  • *
  • Сообщений: 3337
  • Я добрый, честно!
    • Просмотр профиля
    • Моя страница на Launchpad
Можно через inotifywait попробовать сделать.
точно. inotify вас спасёт, в каком-то виде.
"Носителем суверенитета и единственным источником власти в Российской Федерации является ее многонациональный народ" Конституция РФ

 

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