LINUX.ORG.RU

Переменная как start point для for в bash

 


0

2

Например,

for i in {$NUMBER..1}
вызывает ошибку: Invalid numeric literal (while parsing '4..1'). 4 - значение переменной, к которой обращается for. Задача: сделать start point переменной (переменным значением из окружения). Что делать?

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

Перебрать все значения по порядку (предоставив их по очереди телу), начиная с одного (который я называю start point) заканчивая вторым.

princessjune
() автор топика
$ echo `seq 1 5`
1 2 3 4 5
anonymous
()
Ответ на: комментарий от princessjune

То есть, в переменной содержится 4, а тебе нужно передать 4, 3, 2, 1?

Баш не умеет генерировать численные ряды, но можешь задать декремент явно. Если не подойдет - есть утилита, которая умеет генерировать числовые ряды, могу поискать. Решение не очень переносимое, потому что прогу надо ставить на каждый комп из репов.

Если помимо декремента возможен инкремент, необходимо ветвление. В общем, я предложил. Уточнишь, что тебе нужно - набросаю.

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

Спасибки, не надо. Я узнал, что for обрабатывает ряды вида 4 3 2 1, а сгенерить их можно специальной прекрасной программой, генерирующей последовательности чисел - seq.

princessjune
() автор топика
Ответ на: комментарий от Bagrov

Раньше о ней не знал.

Боюсь спросить, чтобы не обидеть: уверен, что раньше писал на баше? А то инкременты, декременты знаешь (чорд, я их в баше ни разу не встречал!), а про seq - не знаешь.

iVS ★★★★★
()
Последнее исправление: iVS (всего исправлений: 1)
$ for (( i=NUMBER; i>=1; i-- )); do echo $i; done

Использовать seq и вообще всякие внешние процессы там, где они не нужны, не надо.

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

Баш не умеет генерировать численные ряды

ORLY?

$ echo {5..1}
5 4 3 2 1

$ echo {5..9}
5 6 7 8 9

$ a=1
$ b=10
$ eval echo {$a..$b}
1 2 3 4 5 6 7 8 9 10
Zmicier ★★★★★
()
Ответ на: комментарий от Bagrov

Я не уверен в переносимости

Тогда и не let, а ": $(( var+=1 ))".

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

Да бога ради, только кто здесь вообще говорит про разные шеллы?

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