Igorka Приклад скрипта bash

Дещо про все і все про небагато, або практичний досвід системного адміністратора.

igorka

скрипта

Приклад скрипта bash

У цьому пості я виклав приклад скрипта написаного наbash і постарався докладно описати, що як і чому робилося. На курсахLinux ми вже закінчили темуbash і щоб зрозуміти як ми її засвоїли викладач дав нам домашнє завдання з написання скрипта наbash. Завдання звучало приблизно так: "написати службу, яка виводитиме на 8-му консоль час, у верхньому лівому кутку, з інтервалом в одну секунду".

Для вирішення завдання нам потрібно написати два скрипти. Перший скрипт буде виводити інформацію на 8 консоль, а другий буде скриптом управління запуском-зупинкою першого скрипта. Спочатку розглянемо простіший - перший скрипт. Я назвав йогоshowtime.

Ось текст скрипту:

echo &>/dev/null > /dev/tty8 - намагаємося записати порожній рядок у/dev/tty8. Щоб на поточну консоль не виводилися службові повідомлення командиecho (з потоку виведення або потоку помилок), ми перенаправляємо їх за допомогою> у спеціальний пристрій/dev/null (у “нікуди”). Після виконання цієї команди буде виконано командуecho $?, яка поверне код результату виконання останньої команди. Якщо доступ до/dev/tty8, то буде повернутий 0 і скрипт продовжить виконання, перейшовши на третій рядокthen, якщо писати не можемо, то переходимо наelse ( рядок 12), потім командуecho “Служба showtime. Управління через - sudo /etc/init.d/timeconsoled startstop” (рядок 13) і завершальну командуexit 2 (рядок 14). За командоюexit 2 скрипт припинить свою роботу та повернекод повернення 2.

Якщо запис/dev/tty8 можливий, то після другого рядка потрапляємо наthen (рядок 3) і далі по порядку.

clear > /dev/tty8 - виконуємо очищення консолі, якщо раптом там була якась інформація. Рядки 5, 6 і 11 (while do done ) - організація циклу.while [ true ] - дозволяє організувати нескінченний цикл, оскількиtrue завжди повертає 0.echo -en “r \r” > /dev/tty8 - дана команда замінятиме область де буде виведено час пробілами і повертатиме курсор у вихідну позицію перед виведенням наступного значення часу. Ключn у командіecho сигналізує, що після виведення інформації не потрібно переходити на наступний рядок. Ключe - означає, що\r має інтерпретуватися як повернення каретки (курсора) початку рядка. Тобто курсор буде повернутий на початок рядка, потім буде виведений порожній рядок і курсор знову буде повернутий на початок рядка у консолі/dev/tty8.

ttt=$(date +%H:%M:%S) - присвоюємо змінній ttt поточне значення часу.

echo -n “$ttt” > /dev/tty8 - виводимо значення часу на восьму консоль.sleep 1 - зупиняємо скрипт на одну секунду. Змінюючи значення, можна організувати інший крок оновлення часу на консолі.

З першим скриптом усі. Його вже можна спробувати запустити від імені рута і подивитися чи виводиться час на консоль. Не забудьте зробити скрипт виконуваним:chmod a+x showtime.