Чтение онлайн

на главную - закладки

Жанры

Искусство программирования на языке сценариев командной оболочки

Купер Мендель

Шрифт:

Команды, которые нельзя отнести ни к одной из вышеперечисленных категорий

jot, seq

Эти утилиты выводят последовательность целых чисел с шагом, заданным пользователем.

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

bash$ seq 5

1

2

3

4

5

bash$ seq -s : 5

1:2:3:4:5

Обе

утилиты, и jot, и seq, очень удобно использовать для генерации списка аргументов в цикле for.

Пример 12-39. Использование seq для генерации списка аргументов цикла for

#!/bin/bash

# Утилита "seq"

echo

for a in `seq 80` # или так: for a in $( seq 80 )

# То же самое, что и for a in 1 2 3 4 5 ... 80 (но как экономит время и силы!).

# Можно использовать и 'jot' (если эта утилита имеется в системе).

do

echo -n "$a "

done # 1 2 3 4 5 ... 80

# Пример использования вывода команды для генерации

# [списка] аргументов цикла "for".

echo; echo

COUNT=80 # Да, 'seq' допускает указание переменных в качестве параметра.

for a in `seq $COUNT` # или так: for a in $( seq $COUNT )

do

echo -n "$a "

done # 1 2 3 4 5 ... 80

echo; echo

BEGIN=75

END=80

for a in `seq $BEGIN $END`

# Если "seq" передаются два аргумента, то первый означает начальное число последовательности,

#+ второй -- последнее,

do

echo -n "$a "

done # 75 76 77 78 79 80

echo; echo

BEGIN=45

INTERVAL=5

END=80

for a in `seq $BEGIN $INTERVAL $END`

#

Если "seq" передется три аргумента, то первый аргумент -- начальное число в последовательности,

#+ второй -- шаг последовательности,

#+ и третий -- последнее число в последовательности.

do

echo -n "$a "

done # 45 50 55 60 65 70 75 80

echo; echo

exit 0

getopt

Команда getopt служит для разбора командной строки, выделяя из нее ключи -- символы, с предшествующим знаком дефис. Этой утилите имеется, встроенный в Bash, аналог -- getopts, более мощная и универсальная команда.

Пример 12-40. Использование getopt для разбора аргументов командной строки

#!/bin/bash

# ex33a.sh

# Попробуйте следующие варианты вызова этого сценария.

# sh ex33a -a

# sh ex33a -abc

# sh ex33a -a -b -c

# sh ex33a -d

# sh ex33a -dXYZ

# sh ex33a -d XYZ

# sh ex33a -abcd

# sh ex33a -abcdZ

# sh ex33a -z

# sh ex33a a

# Объясните полученные результаты.

E_OPTERR=65

if [ "$#" -eq 0 ]

then # Необходим по меньшей мере один аргумент.

echo "Порядок использования: $0 -[options a,b,c]"

exit $E_OPTERR

fi

set -- `getopt "abcd:" "$@"`

# Запись аргументов командной строки в позиционные параметры.

# Что произойдет, если вместо "$@" указать "$*"?

while [ !
– z "$1" ]

do

case "$1" in

– a) echo "Опция \"a\"";;

Поделиться:
Популярные книги

Дракон с подарком

Суббота Светлана
3. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
6.62
рейтинг книги
Дракон с подарком

Бывшие. Война в академии магии

Берг Александра
2. Измены
Любовные романы:
любовно-фантастические романы
7.00
рейтинг книги
Бывшие. Война в академии магии

Мастер клинков. Начало пути

Распопов Дмитрий Викторович
1. Мастер клинков
Фантастика:
фэнтези
9.16
рейтинг книги
Мастер клинков. Начало пути

Имя нам Легион. Том 8

Дорничев Дмитрий
8. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 8

Измена. Право на счастье

Вирго Софи
1. Чем закончится измена
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Право на счастье

Начальник милиции 2

Дамиров Рафаэль
2. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции 2

Камень. Книга 4

Минин Станислав
4. Камень
Фантастика:
боевая фантастика
7.77
рейтинг книги
Камень. Книга 4

Измена. Мой заклятый дракон

Марлин Юлия
Любовные романы:
любовно-фантастические романы
7.50
рейтинг книги
Измена. Мой заклятый дракон

Предатель. Цена ошибки

Кучер Ая
Измена
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Предатель. Цена ошибки

Звездная Кровь. Изгой

Елисеев Алексей Станиславович
1. Звездная Кровь. Изгой
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Изгой

Рождение победителя

Каменистый Артем
3. Девятый
Фантастика:
фэнтези
альтернативная история
9.07
рейтинг книги
Рождение победителя

Барону наплевать на правила

Ренгач Евгений
7. Закон сильного
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Барону наплевать на правила

Камень. Книга шестая

Минин Станислав
6. Камень
Фантастика:
боевая фантастика
7.64
рейтинг книги
Камень. Книга шестая

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь