Онлайн-рабочие станции OnWorks Linux и Windows

Логотип

Бесплатный хостинг в Интернете для рабочих станций

<Предыдущая | Содержание: | Следующая>

для: Традиционная форма оболочки

Оригинальный для синтаксис команды:

для переменная слова]; делать

команды

сделанный

где переменная это имя переменной, которая будет увеличиваться во время выполнения цикла, слова - необязательный список элементов, которые будут последовательно назначаться переменнаякачества команды - это команды, которые должны выполняться на каждой итерации цикла.

Ассоциация для команда полезна в командной строке. Мы легко можем продемонстрировать, как это работает:



[я @ linuxbox ~] $ для i в ABCD; do echo $ i; сделано

ABCD

[я @ linuxbox ~] $ для i в ABCD; do echo $ i; сделано

ABCD


В этом примере для дается список из четырех слов: «A», «B», «C» и «D». Со списком из четырех слов цикл выполняется четыре раза. Каждый раз при выполнении цикла переменной присваивается слово i. Внутри цикла у нас есть эхо команда, отображающая значение i показать задание. Как и в случае с в то время как и до петли, сделанный ключевое слово замыкает цикл.


Действительно мощная особенность для - это количество интересных способов составить список слов. Например, через раскладку скобок:



[я @ linuxbox ~] $ для i в {A..D}; сделать echo $ i; сделано

ABCD

[я @ linuxbox ~] $ для i в {A..D}; сделать echo $ i; сделано

ABCD


или расширение имени пути:



[я @ linuxbox ~] $ для i в дистрибутивах * .txt; do echo $ i; сделано

distros-by-date.txt distros-date.txt distros-key-names.txt distros-key-vernums.txt distros-names.txt distros.txt

дистрибутив-vernums.txt дистрибутив-версии.txt

[я @ linuxbox ~] $ для i в дистрибутивах * .txt; do echo $ i; сделано

distros-by-date.txt distros-date.txt distros-key-names.txt distros-key-vernums.txt distros-names.txt distros.txt

дистрибутив-vernums.txt дистрибутив-версии.txt


или подстановка команды:



#! / Bin / Баш

# самое длинное слово: найти самую длинную строку в файле while [[-n $ 1]]; делать

если [[-r $ 1]]; тогда max_word = max_len = 0

для i в $ (строки $ 1); do len = $ (echo -n $ i | wc -c)

если ((len> max_len)); тогда max_len = $ len max_word = $ i

fi

сделанный

echo "$ 1: '$ max_word' ($ max_len символов)"

фи сдвиг

сделанный

#! / Bin / Баш

# самое длинное слово: найти самую длинную строку в файле while [[-n $ 1]]; делать

если [[-r $ 1]]; тогда max_word = max_len = 0

для i в $ (строки $ 1); do len = $ (echo -n $ i | wc -c)

если ((len> max_len)); тогда max_len = $ len max_word = $ i

fi

сделанный

echo "$ 1: '$ max_word' ($ max_len символов)"

фи сдвиг

сделанный

для: Традиционная форма оболочки


В этом примере мы ищем самую длинную строку, найденную в файле. Когда в командной строке задано одно или несколько имен файлов, эта программа использует струны программа (которая входит в пакет GNU binutils) для создания списка читаемых текстовых «слов» в каждом файле. В для loop обрабатывает каждое слово по очереди и определяет, является ли текущее слово самым длинным из найденных. Когда цикл завершается, отображается самое длинное слово.

Если необязательный in слова часть для команда опущена, для по умолчанию используется обработка позиционных параметров. Мы изменим наши самое длинное слово сценарий для использования этого метода:



#! / Bin / Баш

# longest-word2: найти самую длинную строку в файле для i; делать

если [[-r $ i]]; тогда max_word = max_len = 0

для j в $ (строки $ i); do len = $ (echo -n $ j | wc -c)

если ((len> max_len)); тогда max_len = $ len max_word = $ j

fi

сделанный

echo "$ i: '$ max_word' ($ max_len символов)"

фи сделано

#! / Bin / Баш

# longest-word2: найти самую длинную строку в файле для i; делать

если [[-r $ i]]; тогда max_word = max_len = 0

для j в $ (строки $ i); do len = $ (echo -n $ j | wc -c)

если ((len> max_len)); тогда max_len = $ len max_word = $ j

fi

сделанный

echo "$ i: '$ max_word' ($ max_len символов)"

фи сделано


изображение

Как мы видим, мы изменили самый внешний цикл, чтобы использовать для на месте в то время как. Пропустив список слов в для вместо команды используются позиционные параметры. Внутри цикла предыдущие экземпляры переменной i были заменены на переменные j, Использование сдвиг также был устранен.


Почему я?

Вы могли заметить, что переменная i был выбран для каждого из для примеры цикла выше. Почему? На самом деле никаких особых причин, кроме традиции. Переменная, используемая с для может быть любой допустимой переменной, но i является наиболее распространенным, за ним следует j и k.



изображение

В основе этой традиции лежит язык программирования Фортран. В Fortran необъявленные переменные, начинающиеся с букв I, J, K, L и M, автоматически вводятся как целые числа, а переменные, начинающиеся с любой другой буквы, вводятся как действительные (числа с десятичными дробями). Такое поведение побудило программистов использовать переменные I, J и K в качестве переменных цикла, поскольку было меньше работы использовать их, когда требовалась временная переменная (как это часто бывает с переменными цикла).

Это также привело к следующему остроту на основе Фортрана: «БОГ реален, если не объявлен целым числом».


Лучшие облачные вычисления для ОС в OnWorks: