Как увеличить числа в скрипте bash? - PullRequest
1 голос
/ 02 октября 2019

Я пытаюсь распечатать нечетные числа от 1 до 99, используя скрипт ниже.

start=1
while [[ $start -le 100 ]]
do 
    echo $start
    start=start+2

done

но вместо того, чтобы получать числа, мой вывод выглядит как

1
1+2
1+2+2
1+2+2+2
1+2+2+2+2
1+2+2+2+2+2
1+2+2+2+2+2+2
1+2+2+2+2+2+2+2

Что я здесь пропустил?

Ответы [ 4 ]

3 голосов
/ 02 октября 2019

Вы должны использовать Арифметическое расширение :

Арифметическое расширение предоставляет мощный инструмент для выполнения (целочисленных) арифметических операций в скриптах.

Пример:

start=$((start + 2))

Самый чистый код, который я могу сделать для печати нечетных чисел:

start=1
while [[ $start -le 100 ]]
do
    echo $((start += 2))
done
1 голос
/ 02 октября 2019

Шутите start+2, как показано ниже

start=$((start+2))

Вот еще некоторые подробности

Ссылка от Этот ответ

1 голос
/ 02 октября 2019

Здравствуйте, попробуйте что-то вроде этого:

for (( NUM=1; NUM<=100; NUM=NUM+2 )); do
    echo $NUM
done
0 голосов
/ 02 октября 2019

Как уже указывалось, ваша проблема в том, что вы не увеличиваете число должным образом, вы должны использовать что-то вроде

start=$((start + 2))

или

((start += 2))

Однако вы можете избежатьвесь цикл:

printf '%d\n' {1..100..2}
...