Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Переменные сценария
- # ? Код завершения последней команды (0 – нормальное завершение)
- # $ PID текущего процесса shell
- # ! PID последнего фонового процесса
- # # Число параметров, переданных в shell
- # * Список параметров shell в виде одной строки
- # @ Список параметров shell в виде набора слов
- # - Флаги, передаваемые в shell
- # HOME / PATH / PS1 / SHELL / USER
- # Параметры сценария
- # $0 Имя сценария
- # ${N} Значение N-ного параметра (от 1)
- # Операции отношения чисел
- # -eq равно; -ne не равно;
- # -gt больше; -ge больше или равно;
- # -lt меньше; -le меньше или равно.
- # Оператор if
- # if условие then
- # список_операторов
- # [elif условие then
- # список_операторов ]
- # [else
- # список_операторов]
- # fi
- # Оператор case
- # Case строка in
- # шаблон_1) список_операторов;;
- # esac
- # Функции
- # имя_функции ()
- # (
- # список_операторов
- # )
- ###########################################
- # Разработать сценарий для создания файла данных с информацией, содержащие поля
- # Фамилия (0), год рождения (15), город рождения (15), средний балл (30)
- # В скобках указано смещение поля относительно начала записи.
- #
- # Данные в сценарий передавать через параметры, форматирование полей записи
- # проводить путем циклического добавления необходимого числа пробелов.
- ###########################################
- # Параметры для скрипта
- __='Машлыкина 01.03.1998 Новосибирск 50 \
- Туполев 24.12.1999 Новосибирск 23 \
- Белорусова 06.08.1999 Кемерово 24 \
- Ветрова 06.07.1997 Кемерово 52 \
- Михалицына 19.11.1997 Томск 16 \
- Беломестин 30.06.1999 Омск 27 \
- Монаков 04.09.1998 Екатеринбург 41 \
- Зёмин 12.10.1998 Омск 22'
- ############################################
- # Функция проверяет то, что кол-во параметров кратное четырем
- # Нужно для того, чтобы для все клетки в таблице были заполнены
- # Входные параметры: 1. Количествово параметров, переданных в главный скрипт
- # Возвращаемое начение: 1, если кратно,
- # 0, если не кратно
- function checkParamCount() {
- if [ $(( $1 / 4 * 4 )) -eq $1 ]
- then
- return 1
- else
- return 0
- fi
- }
- # Функция записывает слово, и записывает после него пробелы
- # таким образом, чтобы общая длина была равна передаваемому значению
- # Входные данные: 1. общая длина слова с проблелами
- # 2. слово
- function writeWord() {
- # $1 - отсутп
- # $2 - слово
- echo -n $2 >&3
- size=${#2}
- for (( i=0; i <= $(( $1 - $size )); i++ ))
- do
- echo -n " " >&3
- done
- }
- # Дескриптор для вывода данных в файл students.txt
- exec 3>"students.txt"
- # Если кол-вл параметров не крастно четырем, выходим из скрипта
- checkParamCount $#
- if [ $? -ne 1 ]
- then
- echo "Вы ввели число параметров, не кратное кол-ву студентов";
- exit
- fi
- # Для каждого студента
- while [ $# -ne 0 ]
- do
- # Выводим четыре слова
- writeWord 15 $1;
- writeWord 15 $2;
- writeWord 15 $3;
- writeWord 0 $4;
- # Удаляем четыре слова
- shift;
- shift;
- shift;
- shift;
- # Переходим на новую строку
- echo "" >&3
- done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement