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


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Запуск цикла в bash скрипте  (Прочитано 60314 раз)

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

Оффлайн Usermaster

  • Автор темы
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3282
    • Просмотр профиля
Запуск цикла в bash скрипте
« : 26 Июня 2024, 16:39:11 »
Я в bash не гуру, вот потребовалось мне запустить несколько исполняемых файлов из скрипта.
У меня есть пример для запуска цикла распаковки архивов .zip который я сам же и писал, нифига не могу сообразить как этот цикл переделать для запуска исполняемых файлов.

Получаю список исполняемых файлов в каталогах
find /media/data/Загрузки/1/ -maxdepth 5 -type f -iname 1.sh > 1.txt
Записываю текст для остановки цикла в этот же файл
echo stop >> 1.txt

Далее у меня в примере цикл был такой:

archive = 'sed -n 1p 1.txt'
until [ $archive = stop ]
do
archive = sed -n 1p 1.txt'
unzip "$archive.zip" -d ./$archive"
sed -i '1d' 1.txt'
done

rm 1.txt
А чего это вы тут делаете, а?

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7731
  • We were here
    • Просмотр профиля
Re: Запуск цикла в bash скрипте
« Ответ #1 : 26 Июня 2024, 16:51:54 »
find /media/data/Загрузки/1/ -maxdepth 5 -type f -iname 1.sh -exec bash {} \;
Пользователь добавил сообщение 26 Июня 2024, 16:56:43:
Записываю текст для остановки цикла в этот же файл
Прсто Ctrl+c зажать на пару секунд
« Последнее редактирование: 26 Июня 2024, 16:56:43 от ALiEN »
🖥 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

Оффлайн Usermaster

  • Автор темы
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3282
    • Просмотр профиля
Re: Запуск цикла в bash скрипте
« Ответ #2 : 26 Июня 2024, 17:06:41 »
Хочется изящьно, чтоб сам останавливался.
При распаковке архивов у меня он сам останавливался.
Вечером ещё голову поломаю над своим старым скриптом, может соображу чего.
Если никто не подскажет.
А чего это вы тут делаете, а?

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7731
  • We were here
    • Просмотр профиля
Re: Запуск цикла в bash скрипте
« Ответ #3 : 26 Июня 2024, 17:13:38 »
ну тогда примерно так
STOP=$(sed -n 1p 1.txt)

until [ $STOP = stop ]; do
  script=$(sed -n 1p 1.txt)
  bash "$script"
  sed -i '1d' 1.txt
done

rm 1.txt
« Последнее редактирование: 26 Июня 2024, 17:16:12 от ALiEN »
🖥 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

Оффлайн Usermaster

  • Автор темы
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3282
    • Просмотр профиля
Re: Запуск цикла в bash скрипте
« Ответ #4 : 26 Июня 2024, 20:47:02 »
Ну с Вашей ALiEN помощью всё же допилил до ума.
Ваш вариант не останавливается сам.

Он конечно выдаёт в конце сообщение:
bash: stop: Нет такого файла или каталогаНо это не мешает дальнейшей работе и после деинсталляции старых версий прекрасно запускается установка новой.
Ну пути тут естественно тестовые для отработки скрипта  :)

find /media/data/Загрузки/1/ -maxdepth 5 -type f -iname 1.sh > 1.txt
echo stop >> 1.txt

script=$(sed -n 1p 1.txt)
until [ $script = stop ];
do
script=$(sed -n 1p 1.txt)
bash "$script"
sed -i '1d' 1.txt
done
rm 1.txt
« Последнее редактирование: 26 Июня 2024, 20:49:43 от Usermaster »
А чего это вы тут делаете, а?

Оффлайн Usermaster

  • Автор темы
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 3282
    • Просмотр профиля
Re: Запуск цикла в bash скрипте
« Ответ #5 : 27 Июня 2024, 11:36:44 »
Маленькое дополнение.
В моём случае надо ещё bash убрать перед $script, поскольку я запускаю бинарные файлы а не bash скрипты.
И того получаем так:

find /media/data/Загрузки/1/ -maxdepth 5 -type f -iname 1.sh > 1.txt
echo stop >> 1.txt

script=$(sed -n 1p 1.txt)
until [ $script = stop ];
do
script=$(sed -n 1p 1.txt)
"$script"
sed -i '1d' 1.txt
done
rm 1.txt
« Последнее редактирование: 27 Июня 2024, 11:41:27 от Usermaster »
А чего это вы тут делаете, а?

 

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