Как се поддържа променлива в Linux?

Обвивката на командния ред на операционната система Linux е мощен инструмент, който в основата си е интерпретатор на езици за програмиране. Както при всеки друг език за програмиране, командната черупка ви позволява да използвате променливи за съхраняване, извличане и манипулиране на данни.

Настройване и извличане на стойности на променливи

В командната обвивка bash, която е стандартната обвивка, използвана в Linux, можете да зададете променлива, използвайки общия синтаксис NAME = VALUE . Например, в командния ред можете да въведете:

 х = 5 

А променлива с име x ще бъде зададена на числовата стойност 5 . Имената на променливите могат да бъдат с главни или малки букви, или комбинация от двете, и те са чувствителни към малки и главни букви. Когато задавате променливата, не трябва да има интервали между името на променливата, знака за равенство и стойността.

Не е необходимо предварително да се декларира променливата или да се определи неговият тип данни. Bash определя типа на променливата въз основа на неговата стойност.

Например, нашата променлива може да съдържа и низ:

 х = Добре 

За прост низ не е необходимо да се загражда низът в кавички, но ако низът съдържа интервали, трябва да го заобиколите с двойни кавички:

 x = "Здравейте, свят!" 

За да извлечете стойността на променливата си, я поставете с знак за долар. Например, за да видите стойността на x, използвайки командата echo, ще изпълните:

 echo $ x 

Кои изходи:

 Здравей свят! 

Това, което се случва тук, е, че обвивката поема стойността на вашата променлива и я вмъква във вашата команда. Можете да препращате към променливата където и да е във вашата команда, дори и в двойно цитиран низ:

 echo "$ x $ x Може ли някой да ме чуе? Казах му, $ x" 
 Здравей свят! Здравей свят! Може ли някой да ме чуе? Казах: Здравей, свят! 

Съвет: Променливите се интерпретират само в низ, ако използвате двойни кавички. Ако използвате единични кавички, името на променливата ще се интерпретира буквално, без интерпретация:

 echo '$ x $ x Може ли някой да ме чуе? Казах, $ x ' 
 $ x $ x Може ли някой да ме чуе? Казах, х 

Задаване на стойността на променливата като изход на команда

За да зададете стойността на Вашата променлива да е изход на определена команда, използвайте формата:

 NAME = $ (команда) 

Например, ако потребителското ви име е "steven", изпълняването на командата whoami ще върне стойността steven . Можете да зададете тази променлива:

 myname = $ (Whoami) 
 echo $ myname 
 Стивън 

Можете да направите това за всяка команда. Ако командата поеме аргументи, не е необходимо да поставяте командата в кавички. Всичко в скобите ще се изпълнява като команда:

 x = "Здравейте, свят!" 
 x = $ (echo $ x $ x $ x) 
 echo $ x 
 Здравейте, свят! Здравейте, свят! 

Използване на променливи в прост скрипт

Нека видим как можем да използваме променлива в прост скрипт за архивиране. Да речем, че искате да направите резервно копие на всичко в документите в директорията във вашата домашна директория. Скриптът ще архивира всичко в тази директория и всички директории, които тя съдържа, в tar архив, чието име съдържа текущата дата. Нека да запазим архивите в директория, наречена backups във вашата домашна директория (ще приемем, че тази директория вече съществува. Ако не, можете да стартирате mkdir ~ / backups, за да я създадете).

Отворете текстов редактор и поставете този текст в нов файл:

 #! / bin / bash MYFILENAME = ~ / backups / documents-backup - $ (дата +% Y-% m-% d) .tar.gz 

tar -czf $ OUTPUTFILE ~ / документи

Нека разгледаме всеки ред от този скрипт. Първият ред, #! / Bin / bash, декларира скрипта като изпълним файл и указва, че трябва да се изпълнява с / bin / bash, което е изпълним файл на командната обвивка bash. Забележка: Файлът няма да бъде изпълним, докато не chmod файла по-късно, но тази линия се изисква във всеки правилен bash скрипт.

Вторият ред задава променливата MYFILENAME, която ще съдържа името на архива, съдържащ нашия архив. Първата част от името на файла е директорията за архивиране, ~ / backups .

Забележка: Тилдният символ ( ~ ) е специално име на директория, което винаги представлява нашата домашна директория.)

След това имаме началото на името на файла, архивиране на документи . След това вмъкваме текущата дата, като използваме командата за дата, символа плюс и стринга за формат на датата % Y-% m-% d . Например, ако датата е 23 февруари 2015 г., това ще се върне 2015-02-23 .

И накрая, използваме разширение .tar.gz, което е правилното разширение на името на файла с компресиран gzip. Така че, ако стартираме този скрипт на 23 февруари 2015 г., стойността на MYFILENAME ще бъде ~ / backups / documents-backup-2015-02-23.tar.gz . Ако го стартираме на 7 май 2015 г., стойността ще бъде ~ / backups / documents-backup-2015-05-07.tar.gz .

Третият ред е командата, която създава архива. Използваме командата tar с опцията -czf, която ще създаде ( c ) архивиран с gzipped ( z ), като използва определеното име на файл ( f ). След това указваме името на архивния файл, като се позоваваме на променливата, която създадохме в ред 2, OUTPUTFILE . И накрая, казахме на tar какво е това, което искаме да архивираме: директорията ~ / документите .

За да стартирате скрипта, запишете текстовия файл във вашата домашна директория (или някъде другаде, където предпочитате) и му задайте подходящо име, например backup-my-docs . Не е необходимо да се дава разширение за име на файл. Излезте от текстовия редактор и направете изпълним файл с командата chmod + x, например:

 chmod + x ~ / backup-my-docs 

Сега можете да стартирате скрипта. Например, ако скриптът е във вашата работна директория, можете да го стартирате с:

 ./backup-my-docs 

Или, ако е във вашата домашна директория, можете да я изпълните от всяка директория с командата:

 ~ / Архивиране-ми-документи