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

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

Жанры

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

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

Шрифт:

Пример 10-2. Цикл for с двумя параметрами в каждом из элементов списка

#!/bin/bash

# Список планет.

# Имя кажой планеты ассоциировано с расстоянием от планеты до Солнца (млн. миль).

for planet in "Меркурий 36" "Венера 67" "Земля 93" "Марс 142" "Юпитер 483"

do

set -- $planet #

Разбиение переменной "planet" на множество аргументов (позиционных параметров).

# Конструкция "--" предохраняет от неожиданностей, если $planet "пуста" или начинается с символа "-".

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

# То можно поместить их в массив,

# original_params=("$@")

echo "$1 в $2,000,000 миль от Солнца"

#----две табуляции---к параметру $2 добавлены нули

done

# (Спасибо S.C., за разъяснения.)

exit 0

В качестве списка, в цикле for, можно использовать переменную.

Пример 10-3. Fileinfo: обработка списка файлов, находящегося в переменной

#!/bin/bash

# fileinfo.sh

FILES="/usr/sbin/privatepw

/usr/sbin/pwck

/usr/sbin/go500gw

/usr/bin/fakefile

/sbin/mkreiserfs

/sbin/ypbind" # Список интересующих нас файлов.

# В список добавлен фиктивный файл /usr/bin/fakefile.

echo

for file in $FILES

do

if [ !
– e "$file" ] # Проверка наличия файла.

then

echo "Файл $file не найден."; echo

continue # Переход к следующей итерации.

fi

ls -l $file | awk '{ print $8 " размер: " $5 }' # Печать 2 полей.

whatis `basename $file` # Информация о файле.

echo

done

exit 0

В [списке]

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

Пример 10-4. Обработка списка файлов в цикле for

#!/bin/bash

# list-glob.sh: Создание список файлов в цикле for с использованием

# операции подстановки имен файлов ("globbing").

echo

for file in *

do

ls -l "$file" # Список всех файлов в $PWD (текущем каталоге).

# Напоминаю, что символу "*" соответствует любое имя файла,

# однако, в операциях подстановки имен файлов ("globbing"),

# имеются исключения -- имена файлов, начинающиеся с точки.

# Если в каталоге нет ни одного файла, соответствующего шаблону,

# то за имя файла принимается сам шаблон.

# Чтобы избежать этого, используйте ключ nullglob

# (shopt -s nullglob).

# Спасибо S.C.

done

echo; echo

for file in [jx]*

do

rm -f $file # Удаление файлов, начинающихся с "j" или "x" в $PWD.

echo "Удален файл \"$file\"".

done

echo

exit 0

Если [список] в цикле for не задан, то в качестве оного используется переменная $@ -- список аргументов командной строки. Оень остроумно эта особенность проиллюстрирована в Пример A-18.

Пример 10-5. Цикл for без списка аргументов

#!/bin/bash

# Попробуйте вызвать этот сценарий с аргументами и без них и посмотреть на результаты.

for a

do

echo -n "$a "

done

# Список аргументов не задан, поэтому цикл работает с переменной '$@'

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

Блуждающие огни 4

Панченко Андрей Алексеевич
4. Блуждающие огни
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Блуждающие огни 4

Я сделаю это сама

Кальк Салма
1. Магический XVIII век
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Я сделаю это сама

Флеш Рояль

Тоцка Тала
Детективы:
триллеры
7.11
рейтинг книги
Флеш Рояль

Боярышня Дуняша

Меллер Юлия Викторовна
1. Боярышня
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Боярышня Дуняша

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Леди для короля. Оборотная сторона короны

Воронцова Александра
3. Королевская охота
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Леди для короля. Оборотная сторона короны

На границе империй. Том 10. Часть 1

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 1

Черный Маг Императора 5

Герда Александр
5. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 5

Невест так много. Дилогия

Завойчинская Милена
Невест так много
Любовные романы:
любовно-фантастические романы
7.62
рейтинг книги
Невест так много. Дилогия

Идеальный мир для Социопата 3

Сапфир Олег
3. Социопат
Фантастика:
боевая фантастика
6.17
рейтинг книги
Идеальный мир для Социопата 3

Повелитель механического легиона. Том VIII

Лисицин Евгений
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Повелитель механического легиона. Том VIII

Наследник павшего дома. Том I

Вайс Александр
1. Расколотый мир
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Наследник павшего дома. Том I

Крещение огнем

Сапковский Анджей
5. Ведьмак
Фантастика:
фэнтези
9.40
рейтинг книги
Крещение огнем

Камень Книга двенадцатая

Минин Станислав
12. Камень
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
5.00
рейтинг книги
Камень Книга двенадцатая