@oleww05

Как выполнить цикл с двумя переменными?

Использую цикл внутри цикла
#!/bin/bash
for a in {1..3}; do
for b in {4..6}; do
echo "text untitled/$a.rar /untitled/$b.rar"
done; done

Получается так:
text untitled/1.rar /untitled/4.rar
text untitled/1.rar /untitled/5.rar
text untitled/1.rar /untitled/6.rar
text untitled/2.rar /untitled/4.rar
text untitled/2.rar /untitled/5.rar
text untitled/2.rar /untitled/6.rar
text untitled/3.rar /untitled/4.rar
text untitled/3.rar /untitled/5.rar
text untitled/3.rar /untitled/6.rar


Вопрос как получить такой результат?
text /untitled/1.rar /untitled/4.rar
text /untitled/2.rar /untitled/5.rar
text /untitled/3.rar /untitled/6.rar
  • Вопрос задан
  • 820 просмотров
Решения вопроса 1
delphinpro
@delphinpro
frontend developer
#!/bin/bash
for (( a=1, b=4; a <= 3; a++, b++ ))
do
echo "text untitled/$a.rar /untitled/$b.rar"
done
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@BornID
Можно добится результата и обычным циклом for:
for a in "1 3" "2 4" "5 6" ; do set -- $a ; echo "text untitled/$1.rar /untitled/$2.rar" ; done

Суть:
Разбиваем переменную $a на аргументы.
Далее выводим не саму переменную $a - а аргументы $1 и $2.

Результат:
text untitled/1.rar /untitled/3.rar
text untitled/2.rar /untitled/4.rar
text untitled/5.rar /untitled/6.rar

Источник: https://www.opennet.ru/docs/RUS/bash_scripting_gui...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы