Bash-task — различия между версиями

Материал из VAAL-WIKI
Перейти к: навигация, поиск
м (Добавлена задача №2)
м (bash_task_Обновление форматирования)
Строка 1: Строка 1:
 
<p style="text-align:center"><span style="color:red">'''''Задача №1'''''</span></p>
 
<p style="text-align:center"><span style="color:red">'''''Задача №1'''''</span></p>
Используя цикл и оператор выбора написать скрипт, реализующий следующее:                                                          
+
'''Используя цикл и оператор выбора написать скрипт, реализующий следующее''':
* Выводит на экран меню с выбором, состоящим из двух пунктов "1)" "2)"                                                          
+
* Выводит на экран(в терминал) '''меню с выбором''', состоящим из двух пунктов "''1)''" "''2)''"
* При выборе "1)" выводит надпись на экран о выводе 1                                                                          
+
* При выборе "''1)''" выводит текст на экран(в терминал), содержащий только цифру '''1'''
* При выборе "2)" выводит надпись на экран о выводе 2                                                                          
+
* При выборе "''2)''" выводит текст на экран(в терминал), содержащий только цифру '''2'''
* При вводе любого другого символа, выводит сообщение о неправильном вводе на экран и  просит повторить ввод.                  
+
* При вводе любого другого символа, выводит на экран сообщение о неправильном вводе и  просит повторить ввод.
 
При неправильном вводе цикл бесконечен, т.е. продолжается пока не будет введён нужный символ, а затем снова выводится меню выбора.
 
При неправильном вводе цикл бесконечен, т.е. продолжается пока не будет введён нужный символ, а затем снова выводится меню выбора.
Модернизировать скрипт так, чтобы при неправильном вводе он выводил сообщение о выходе из скрипта через три секунды,            
+
'''Модернизировать''' скрипт так, чтобы при ''неправильном вводе'' он выводил сообщение о выходе из скрипта через ''три секунды'', после трёх секунд ожидания осуществляется выход из скрипта.                                                                                   
после ожидание в три секунды и выход из скрипта.                                                                                   
+
 
<p style="text-align:center">
 
<p style="text-align:center">
 
<spoiler text="Вариант решения Задачи №1"><source lang="bash">
 
<spoiler text="Вариант решения Задачи №1"><source lang="bash">
 
#!/bin/env bash
 
#!/bin/env bash
#trap 'echo -e "\e[31mХер тебе, а не прерывание\e[0m!"' 1 2 3 5 9 15
+
#trap 'echo -e "\e[31mВот фиг тебе, а не прерывание\e[0m!"' 1 2 3 5 9 15
 
PS3='Введите значение: ' && echo
 
PS3='Введите значение: ' && echo
 
                                                                                                
 
                                                                                                
Строка 40: Строка 39:
 
</p>
 
</p>
 
<p style="text-align:center"><span style="color:red">'''''Задача №2'''''</span></p>
 
<p style="text-align:center"><span style="color:red">'''''Задача №2'''''</span></p>
Написать скрипт реализующий следующее:                                                                                          
+
'''Написать скрипт реализующий следующее''':
* Создать функцию, которая реализует вывод списка директорий в файл /tmp/dir_list.log. При этом в качестве входного аргумента для функции служит переданный самому скрипту параметр, представляющий из себя абсолютный путь.                                                                                    
+
* Создать '''функцию''', которая реализует ''вывод списка директорий'' в файл '''/tmp/dir_list.log'''. При этом в качестве ''входного аргумента'' для функции служит переданный скрипту параметр, представляющий из себя ''абсолютный путь''.
* Создать функцию, которая будет считывать содержимое /tmp/dir_list.log и выводить на экран, а также копировать это содержимое в /tmp/dir_list.0.                                                                          
+
* Создать '''функцию''', которая будет ''считывать содержимое'' '''/tmp/dir_list.log''' и выводить на экран, а также копировать это содержимое в '''/tmp/dir_list.0'''.
* Вызов функций происходит с задержкой в 5 секунд                                                                              
+
* Вызов функций происходит с ''задержкой в 5 секунд''.
* После успешной отработки скрипта и выхода из него файлы /tmp/dir_list.log и /tmp/dir_list.0 должны быть автоматически удалены. Для этого пункта запрещается прямой вызов `rm -rf` перед завершением скрипта.
+
* После успешной отработки скрипта и выхода из него файлы '''/tmp/dir_list.log''' и '''/tmp/dir_list.0''' должны быть автоматически удалены. Для этого пункта '''запрещается''' прямой вызов ''`rm -rf`'' или ''$(rm -rf)'' перед завершением скрипта.
 
<p style="text-align:center">
 
<p style="text-align:center">
 
<spoiler text="Вариант решения Задачи №2"><source lang="bash">
 
<spoiler text="Вариант решения Задачи №2"><source lang="bash">

Версия 08:28, 20 февраля 2018

Задача №1

Используя цикл и оператор выбора написать скрипт, реализующий следующее:

  • Выводит на экран(в терминал) меню с выбором, состоящим из двух пунктов "1)" "2)"
  • При выборе "1)" выводит текст на экран(в терминал), содержащий только цифру 1
  • При выборе "2)" выводит текст на экран(в терминал), содержащий только цифру 2
  • При вводе любого другого символа, выводит на экран сообщение о неправильном вводе и просит повторить ввод.

При неправильном вводе цикл бесконечен, т.е. продолжается пока не будет введён нужный символ, а затем снова выводится меню выбора. Модернизировать скрипт так, чтобы при неправильном вводе он выводил сообщение о выходе из скрипта через три секунды, после трёх секунд ожидания осуществляется выход из скрипта.

Вариант решения Задачи №1

Задача №2

Написать скрипт реализующий следующее:

  • Создать функцию, которая реализует вывод списка директорий в файл /tmp/dir_list.log. При этом в качестве входного аргумента для функции служит переданный скрипту параметр, представляющий из себя абсолютный путь.
  • Создать функцию, которая будет считывать содержимое /tmp/dir_list.log и выводить на экран, а также копировать это содержимое в /tmp/dir_list.0.
  • Вызов функций происходит с задержкой в 5 секунд.
  • После успешной отработки скрипта и выхода из него файлы /tmp/dir_list.log и /tmp/dir_list.0 должны быть автоматически удалены. Для этого пункта запрещается прямой вызов `rm -rf` или $(rm -rf) перед завершением скрипта.

Вариант решения Задачи №2