Bash-скрипты: аргументы, условия и циклы
Напишите скрипт, который проверяет аргументы и коды ошибок, и скрипт с циклом по журналам.
- linux.bash
Задания
1. Счётчик строк20 очк.
Создайте исполняемый скрипт
~/bin/count.sh, который:- при запуске с одним аргументом-файлом выводит только число строк в нём (
count.sh ~/data/list.txt→5); - при запуске без аргументов выводит подсказку об использовании в поток ошибок и завершается с кодом
1.
- при запуске с одним аргументом-файлом выводит только число строк в нём (
2. Нет файла — другой код15 очк.
Доработайте
~/bin/count.sh: если переданного файла не существует, скрипт пишет сообщение в поток ошибок и завершается с кодом2.3. Отчёт об ошибках20 очк.
Создайте исполняемый скрипт
~/bin/errors.sh, который для каждого файла*.logв~/logsвыводит строку «имя-файла количество-строк-с-ERROR», напримерapp.log 3. Порядок — по имени файла, как его выдаёт шаблон.
Вводные и справка по командам
Два небольших инструмента, которые пригодятся в работе: счётчик строк с проверкой аргументов и отчёт
об ошибках по всем журналам. Скрипты кладите в ~/bin. Проверка запускает их от вашего имени из
другого каталога, поэтому используйте абсолютные пути или $HOME.
Справка
| Конструкция | Что делает |
|---|---|
#!/bin/bash | первая строка скрипта |
$1, $# | первый аргумент, число аргументов |
if [ $# -ne 1 ]; then ... fi | если аргументов не ровно один |
[ -f "$1" ] | существует ли обычный файл |
echo "текст" >&2 | вывести в поток ошибок |
exit 2 | завершить скрипт с кодом 2 |
wc -l < "$1" | количество строк — только число, без имени файла |
for f in "$HOME"/logs/*.log; do ... done | цикл по файлам |
basename "$f" | имя файла без пути |
grep -c ERROR "$f" | число строк с ERROR |
chmod +x файл | сделать скрипт исполняемым |
Создать файл со скриптом можно в редакторе: nano ~/bin/count.sh (Ctrl+O, Enter — сохранить;
Ctrl+X — выйти). Проверить код возврата последней команды: echo $?.