Igorka Примерен bash скрипт

Малко за всичко и всичко за малко, или практическият опит на системен администратор.

bash

скрипт

пример за bash скрипт

В тази публикация публикувах пример за скрипт, написан наbash и се опитах да опиша подробно какво, как и защо е направено. В курсовете поLinux вече завършихме тематаbash и за да разберем как сме я научили, учителят ни даде домашна работа за писане на скрипт вbash. Задачата звучеше по следния начин: „напишете услуга, която ще показва времето на 8-та конзола, в горния ляв ъгъл, с интервал от една секунда.“

За да решим проблема, трябва да напишем два скрипта. Първият скрипт ще изведе информация към 8-та конзола, а вторият ще бъде старт-стоп контролен скрипт за първия скрипт. Първо, помислете за по-прост - първият скрипт. Кръстих гоshowtime.

Ето текста на сценария:

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

Ако записът в/dev/tty8 е възможен, тогава след втория ред стигаме дослед това (ред 3) и по-нататък по ред.

изчистване > /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=$(дата +%H:%M:%S) - присвояване на текущата времева стойност на променливата ttt.

ехо -n “$ttt” > /dev/tty8 - показва стойността на времето на осмата конзола.sleep 1 - спиране на скрипта за една секунда. Като промените стойността, можете да организирате друга стъпка за актуализиране на часа на конзолата.

Всичко с първия сценарий. Вече можете да опитате да го стартирате като root и да видите дали часът се показва на конзолата. Само не забравяйте да направите скрипта изпълним:chmod a+x showtime.