LINUX.ORG.RU

for две переменных.

 ,


0

1

Доброго всем здравия! Возможно ли передать две переменных для цикла for в bash'e? в данный момент делаю так:

for i in {1..10}; do for u in 01 02 03; do echo $i $u; done; done;
но сдается мне, что это велосипед с квадратными колесами и баранкой вместо руля:/ может есть альтернатива?


Ответ на: комментарий от Sherman

Это больше вопрос того, какой нужен результат. А два цикла это вполне себе ОК.

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

А что ты хочешь сделать? В твоем варианте «Для каждого числа от одного до десяти выполнить три действия, в каждом из которых <...>». Что ты хочешь сделать с двумя списками item'ов без вложенного цикла? Словами можешь это описать?

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

иногда возникает надобность в подобных операциях, например: есть 20 папок, в каждой из этих папок есть подпапки с названиями типа 2016-хх-хх нужно скопировать из 4, 5, 6, и 10 папки, подпапки 2016-07-01[05]. Именно в таких случаях использую двойной for:

for folder in 4 5 6 10; do for date in {1..5}; do cp -R /path/$folder/2016-07-0$date /path/otherside/; done; done;

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

Именно в таких случаях вам отлично подойдет find, который умеет в регекспы в именах каталогов (и файлов тоже) и может выполнять определенные действия с найденными файлами\каталогами (хотя можно и циклом, да)

alozovskoy ★★★★★ ()

Не слушай старпёров
Тебе нужен рекурсивный глоббинг

 for i in {1..8}/{9..20};do blablabla;done

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

Спасибо, этого я не знал, но это слегка не то, если брать пример:

for folder in 4 5 6 10; do for date in {1..5}; do cp -R /path/$folder/2016-07-0$date /path/otherside/; done; done;
то там нужны именно две переменных, потому как значения folder и date находятся не рядом и плюс первая переменная имеет набор цифр, а вторая их последовательность, если бы обе переменных состояли из последовательности, тогда можно сделать по Вашему:
for i in {4..7}/2016-07-0{1..5}; do cp -R /path/$i /path/otherside/; done; 

Sherman ()

ну блин школоту даже параметрическому способу задания кривой теперь не учят не?


 цикл по t 
   x=f(t)
   y=g(t)
    тельце цикла с твоими блек-x и ш-у
anonymous ()
Ответ на: комментарий от anonymous

Уважаемый, а при чем тут школота? Я спросил конкретно про for, когда меня будет интересовать Ваше мнение о параметрическом способе задания кривой я Вас обязательно спрошу.

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