Диапазон Bash: как перебирать последовательности, сгенерированные в оболочке

Bash Range How Iterate Over Sequences Generated Shell



Вы можете перебирать последовательность чисел в bash двумя способами. Один из них - с помощью seq команда, а другая - путем указания диапазона в цикле for. В seq , последовательность начинается с единицы, число увеличивается на единицу на каждом шаге и печатается каждое число в каждой строке до верхнего предела по умолчанию. Если число начинается с верхнего предела, оно уменьшается на единицу на каждом шаге. Обычно все числа интерпретируются как числа с плавающей запятой, но если последовательность начинается с целого числа, то выводится список десятичных целых чисел. Если команда seq может выполняться успешно, она возвращает 0, в противном случае она возвращает любое ненулевое число. Вы также можете перебирать последовательность чисел, используя цикл for с диапазоном. Оба seq command и цикл for с диапазоном показаны в этом руководстве на примерах.

Параметры команды seq:

Вы можете использовать seq команда, используя следующие параметры.







Эта опция используется для дополнения чисел ведущими нулями для печати всех чисел одинаковой ширины.



-f формат

Эта опция используется для печати числа в определенном формате. Число с плавающей запятой можно отформатировать, используя% f,% g и% e в качестве символов преобразования. % g используется по умолчанию.



-s строка

Эта опция используется для разделения чисел строкой. Значение по умолчанию - новая строка (« n»).





Примеры команды seq:

Вы можете применить команду seq тремя способами. Вы можете использовать только верхний предел или верхний и нижний предел или верхний и нижний предел с увеличением или уменьшением значения каждого шага. В следующих примерах показаны различные варианты использования команды seq с параметрами.

Пример-1: команда seq без опции

Когда используется только верхний предел, число будет начинаться с 1 и увеличиваться на единицу на каждом шаге. Следующая команда напечатает число от 1 до 4.



$seq 4

Выход:

Когда два значения используются с командой seq, тогда первое значение будет использоваться как начальное число, а второе значение будет использоваться как конечное число. Следующая команда напечатает число от 7 до 15.

$seq 7 пятнадцать

Выход:

Когда вы будете использовать три значения с командой seq, тогда второе значение будет использоваться как значение приращения или уменьшения для каждого шага. Для следующей команды начальный номер - 10, конечный номер - 1, и каждый шаг будет засчитываться путем уменьшения 2.

$seq 10 -2 1

Выход:

Пример-2: seq с параметром –w

Следующая команда напечатает результат, добавив ведущий ноль для числа от 1 до 9.

$seq 0110

Выход:

Пример-3: seq с опцией –s

Следующая команда использует - в качестве разделителя для каждого порядкового номера. Последовательность чисел будет напечатана с добавлением - в качестве разделителя.

$seq -s-8

Выход:

Пример-4: seq с параметром -f

Следующая команда напечатает 10 значений даты, начиная с 1. Здесь параметр% g используется для добавления порядкового номера к другому строковому значению.

$seq -f '% g / 04/2018' 10

выход:

Bash Range

Следующая команда используется для генерации последовательности чисел с плавающей запятой с использованием% f. Здесь число будет начинаться с 3 и увеличиваться на 0,8 на каждом шаге, а последнее число будет меньше или равно 6.

$seq -f '% f' 3 0,8 6

Выход:

Пример-5: записать последовательность в файл

Если вы хотите сохранить последовательность номеров в файл без печати в консоли, вы можете использовать следующие команды. Первая команда напечатает числа в файл с именем seq.txt . Число будет генерироваться от 5 до 20 и увеличиваться на 10 на каждом шаге. Вторая команда используется для просмотра содержимого seq.txt файл.

$ seq 5 10 20 | кошка> seq.txt
$ cat seq.txt

Выход:

Пример-6: Использование seq в цикле for

Предположим, вы хотите создать файлы с именами от fn1 до fn10, используя цикл for с seq. Создайте файл с именем sq1.bash и добавьте следующий код. Цикл For будет повторяться 10 раз с помощью команды seq и создавать 10 файлов в последовательности fn1, fn2, fn3… ..fn10.

#! / bin / bash
дляяв ``seq 10``
делать
трогатьfn.$ i
сделано

Выход:

Выполните следующие команды, чтобы выполнить код файла bash и проверить, созданы ли файлы.

$трепатьsq1.bash
$ls

Примеры цикла for с диапазоном:

Пример-7: Для цикла с диапазоном

Альтернативой команде seq является диапазон. Вы можете использовать диапазон в цикле for для генерации последовательности чисел, например seq. Напишите следующий код в файле bash с именем sq2.bash . Цикл будет повторяться 5 раз и на каждом шаге выводить квадратный корень из каждого числа.

#! / bin / bash
дляпв {1..5}
делать
((результат= п*п))
выбросил $ n квадратзнак равно$ результат
сделано

Выход:

Запустите команду, чтобы выполнить сценарий файла.

$трепатьsq2.bash

Пример-8: Для цикла с диапазоном и значением приращения

По умолчанию число увеличивается на единицу на каждом шаге в диапазоне, например seq. Вы также можете изменить значение приращения в диапазоне. Напишите следующий код в файле bash с именем sq3.bash . Цикл for в скрипте будет повторяться 5 раз, каждый шаг увеличивается на 2 и печатаются все нечетные числа от 1 до 10.

#! / bin / bash
выбросил 'все нечетные числа от 1 до 10 равны'
дляяв {1..10..2}
делать
выбросил $ i;
сделано

Выход:

Запустите команду, чтобы выполнить сценарий файла.

$трепатьsq3.bash

Если вы хотите работать с последовательностью чисел, вы можете использовать любой из вариантов, показанных в этом руководстве. После завершения этого руководства вы сможете более эффективно использовать команду seq и цикл for с диапазоном в своем сценарии bash.