Advertisement
Gistrec

ОССиС лабораторная 3 задание 3

Mar 25th, 2018
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 4.52 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. # Переменные сценария
  4. #   ?   Код завершения последней команды (0 – нормальное завершение)
  5. #   $   PID текущего процесса shell
  6. #   !   PID последнего фонового процесса
  7. #   #   Число параметров, переданных в shell
  8. #   *   Список параметров shell в виде одной строки
  9. #   @   Список параметров shell в виде набора слов
  10. #   -   Флаги, передаваемые в shell
  11. #   HOME / PATH / PS1 / SHELL / USER
  12.  
  13. # Параметры сценария
  14. #   $0   Имя сценария
  15. #   ${N}   Значение N-ного параметра (от 1)
  16.  
  17. # Операции отношения чисел
  18. #   -eq   равно;           -ne   не равно;
  19. #   -gt   больше;         -ge   больше или равно;
  20. #   -lt   меньше;         -le   меньше или равно.
  21.  
  22. # Оператор if
  23. #   if  условие  then
  24. #        список_операторов
  25. #   [elif  условие  then
  26. #        список_операторов ]
  27. #   [else  
  28. #        список_операторов]
  29. #   fi
  30.  
  31. # Оператор case
  32. #   Case   строка   in
  33. #       шаблон_1) список_операторов;;
  34. #   esac
  35.  
  36. # Функции
  37. #   имя_функции ()
  38. #   (
  39. #   список_операторов
  40. #   )
  41.  
  42. ###########################################
  43. # Разработать сценарий для создания файла данных с информацией, содержащие поля
  44. #       Фамилия (0), год рождения (15), город рождения (15), средний балл (30)
  45. # В скобках указано смещение поля относительно начала записи.
  46. #
  47. # Данные в сценарий передавать через параметры, форматирование полей записи
  48. #       проводить путем циклического добавления необходимого числа пробелов.
  49. ###########################################
  50. # Параметры для скрипта
  51. __='Машлыкина 01.03.1998 Новосибирск 50 \
  52. Туполев 24.12.1999 Новосибирск 23 \
  53. Белорусова 06.08.1999 Кемерово 24 \
  54. Ветрова 06.07.1997 Кемерово 52 \
  55. Михалицына 19.11.1997 Томск 16 \
  56. Беломестин 30.06.1999 Омск 27 \
  57. Монаков 04.09.1998 Екатеринбург 41 \
  58. Зёмин 12.10.1998 Омск 22'
  59. ############################################
  60.  
  61.  
  62. # Функция проверяет то, что кол-во параметров кратное четырем
  63. # Нужно для того, чтобы для все клетки в таблице были заполнены
  64. # Входные параметры: 1. Количествово параметров, переданных в главный скрипт
  65. # Возвращаемое начение: 1, если кратно,
  66. #                       0, если не кратно
  67. function checkParamCount() {
  68.     if [ $(( $1 / 4 * 4 )) -eq $1 ]
  69.     then
  70.         return 1
  71.     else
  72.         return 0
  73.     fi
  74. }
  75.  
  76. # Функция записывает слово, и записывает после него пробелы
  77. # таким образом, чтобы общая длина была равна передаваемому значению
  78. # Входные данные: 1. общая длина слова с проблелами
  79. #                 2. слово
  80. function writeWord() {
  81.     # $1 - отсутп
  82.     # $2 - слово
  83.     echo -n $2 >&3
  84.     size=${#2}
  85.     for (( i=0; i <= $(( $1 - $size )); i++ ))
  86.     do
  87.         echo -n " " >&3
  88.     done
  89. }
  90.  
  91. # Дескриптор для вывода данных в файл students.txt
  92. exec 3>"students.txt"
  93.  
  94. # Если кол-вл параметров не крастно четырем, выходим из скрипта
  95. checkParamCount $#
  96. if [ $? -ne 1 ]
  97. then
  98.     echo "Вы ввели число параметров, не кратное кол-ву студентов";
  99.     exit
  100. fi
  101.  
  102.  
  103.  
  104. # Для каждого студента
  105. while [ $# -ne 0 ]
  106. do
  107.     # Выводим четыре слова
  108.     writeWord 15 $1;
  109.     writeWord 15 $2;
  110.     writeWord 15 $3;
  111.     writeWord 0  $4;
  112.     # Удаляем четыре слова
  113.     shift;
  114.     shift;
  115.     shift;
  116.     shift;
  117.     # Переходим на новую строку
  118.     echo "" >&3
  119. done
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement