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

на главную

Жанры

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

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

Шрифт:

#+ (список аргументов командной строки, включая пробельные символы).

echo

exit 0

При создании списка аргументов, в цикле for допускается пользоваться подстановкой команд. См. Пример 12-39, Пример 10-10 и Пример 12-33.

Пример 10-6. Создание списка аргументов в цикле for с помощью операции подстановки команд

#!/bin/bash

#

уЩЫЬ for гЯ [гаЩгЫЯЭ], гЯкФСЮЮйЭ г аЯЭЯниР аЯФгдСЮЯзЫЩ ЫЯЭСЮФ.

NUMBERS="9 7 3 8 37.53"

for number in `echo $NUMBERS` # for number in 9 7 3 8 37.53

do

echo -n "$number "

done

echo

exit 0

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

Пример 10-7. grep для бинарных файлов

#!/bin/bash

# bin-grep.sh: Поиск строк в двоичных файлах.

# замена "grep" для бинарных файлов.

# Аналогично команде "grep -a"

E_BADARGS=65

E_NOFILE=66

if [ $# -ne 2 ]

then

echo "Порядок использования: `basename $0` string filename"

exit $E_BADARGS

fi

if [ !
– f "$2" ]

then

echo "Файл \"$2\" не найден."

exit $E_NOFILE

fi

for word in $( strings "$2" | grep "$1" )

# Инструкция "strings" возвращает список строк в двоичных файлах.

# Который затем передается по конвейеру команде "grep", для выполнения поиска.

do

echo $word

done

# Как указывает S.C., вышепрведенное объявление цикла for может быть упрощено

# strings "$2" | grep "$1" | tr -s "$IFS" '[\n*]'

# Попробуйте что нибудь подобное: "./bin-grep.sh mem /bin/ls"

exit 0

Еще один

пример.

Пример 10-8. Список всех пользователей системы

#!/bin/bash

# userlist.sh

PASSWORD_FILE=/etc/passwd

n=1 # Число пользователей

for name in $(awk 'BEGIN{FS=":"}{print $1}' < "$PASSWORD_FILE" )

# Разделитель полей = : ^^^^^^

# Вывод первого поля ^^^^^^^^

# Данные берутся из файла паролей ^^^^^^^^^^^^^^^^^

do

echo "Пользователь #$n = $name"

let "n += 1"

done

# Пользователь #1 = root

# Пользователь #2 = bin

# Пользователь #3 = daemon

# ...

# Пользователь #30 = bozo

exit 0

И заключительный пример использования подстановки команд при создании [списка].

Пример 10-9. Проверка авторства всех бинарных файлов в текущем каталоге

#!/bin/bash

# findstring.sh:

# Поиск заданной строки в двоичном файле.

directory=/usr/local/bin/

fstring="Free Software Foundation" # Поиск файлов от FSF.

for file in $( find $directory -type f -name '*' | sort )

do

strings -f $file | grep "$fstring" | sed -e "s%$directory%%"

# Команде "sed" передается выражение (ключ -e),

#+ для того, чтобы изменить обычный разделитель "/" строки поиска и строки замены

#+ поскольку "/" - один из отфильтровываемых символов.

# Использование такого символа порождает сообщение об ошибке (попробуйте).

done

exit 0

# Упражнение:

# ---------------

# Измените сценарий таким образом, чтобы он брал

#+ $directory и $fstring из командной строки.

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

Ретроградный меркурий

Рам Янка
4. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Ретроградный меркурий

Я еще не барон

Дрейк Сириус
1. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я еще не барон

Полковник Империи

Ланцов Михаил Алексеевич
3. Безумный Макс
Фантастика:
альтернативная история
6.58
рейтинг книги
Полковник Империи

Бремя империи

Афанасьев Александр
Бремя империи - 1.
Фантастика:
альтернативная история
9.34
рейтинг книги
Бремя империи

Инферно

Кретов Владимир Владимирович
2. Легенда
Фантастика:
фэнтези
8.57
рейтинг книги
Инферно

Адмирал южных морей

Каменистый Артем
4. Девятый
Фантастика:
фэнтези
8.96
рейтинг книги
Адмирал южных морей

Защитник

Астахов Евгений Евгеньевич
7. Сопряжение
Фантастика:
боевая фантастика
постапокалипсис
рпг
5.00
рейтинг книги
Защитник

Я – Орк. Том 3

Лисицин Евгений
3. Я — Орк
Фантастика:
юмористическое фэнтези
попаданцы
5.00
рейтинг книги
Я – Орк. Том 3

Мир-о-творец

Ланцов Михаил Алексеевич
8. Помещик
Фантастика:
альтернативная история
5.00
рейтинг книги
Мир-о-творец

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Я – Орк. Том 4

Лисицин Евгений
4. Я — Орк
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я – Орк. Том 4

Хозяйка лавандовой долины

Скор Элен
2. Хозяйка своей судьбы
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Хозяйка лавандовой долины

Разбуди меня

Рам Янка
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Разбуди меня

Курсант: назад в СССР 9

Дамиров Рафаэль
9. Курсант
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант: назад в СССР 9