# Image.jpgПрівет, читачам мого блогу. Не так давно дізнався практично все про змінних в інтерпретаторі bash. На даний момент бажаю для вас про це розповісти.
Змінні в bash дуже інтенсивно використовуються при написанні скриптів, як втім, і в будь-якій мові програмування для написання програм. Типи змінних в bash відсутні.
Змінна в bash може являти собою число, символ або рядок символів. Ім'я змінної може починатися з літери або з знака підкреслення і не може містити дефіс.Фізіческі, змінні представляють собою іменовані ділянки пам'яті, в які може бути записана будь-яка інформація.
Хоча, вищесказане про відсутність типу змінної можна оскаржити, бо змінні в bash діляться на Головні змінні (їх же називаю ще - глобальними, стандартними, змінні середовища або внутрішніми) і призначені для користувача (які визначені користувачем під час роботи). При цьому, користувач може переводить свою призначену для користувача змінну в глобальну, за допомогою команди export. Про інших командах управління змінним можна почитати тут.
При використанні змінних. існує таке негласне угоду, що спрощує роботу: для глобальних змінних вживаються тільки Малі літери, для інших - маленькі.
змінні середовища
Давайте поговоримо про змінних середовища. Дані змінні, задані в файлах /etc/.profile,
/.bash_profile і не започатковано при завантаженні, або при виконанні команди ". файл_ініціалізаціі". Зазвичай, головні значення змінних середовища наступні:
У змінній $ BASH міститься повний шлях до виконуваного файлу командної оболонки Bash.
У змінну $ BASH_VERSION записується версія Bash.
Змінна, яка зберігає шляху пошуку каталогу. (Використовується при введенні команди cd імя_каталога без слеша)
містить список каталогів для пошуку файлів класів Java і архівів Java.
домашній каталог поточного користувача.
У змінній $ HOSTNAME зберігається ім'я комп'ютера.
кількість подій, що зберігаються в історії за Один сеанс
Розміщення файлу історії подій
кількість подій, що зберігаються в історії між сеансами
змінна зберігає знаки, які є роздільниками команд і рис. (За замовчуванням - пробіл, табуляція і новий рядок)
поточна установка локалізації, яка дозволяє налаштувати командну оболонку для використання в різних країнах і на різних мовах.
У змінній $ OSTYPE міститься опис операційної системи.
список каталогів для пошуку команд і додатків, коли повний шлях до файлу не заданий.
PS1 вживається як основна рядок запрошення. (Те саме [root @ proxy
PS2 вживається як вторинна рядок запрошення.
Ця команда повинна бути виконана до відображення рядка запрошення Bash.
повний шлях до поточного робочого каталогу.
повний шлях до поточної командній оболонці.
У змінній $ USER міститься ім'я поточного користувача.
змінні користувача
Присвоєння значення змінної
Змінні з'являються, як користувач "оголосить" дану змінну, іншими словами присвоїть змінній якесь значення:
Діяння над змінними
Як уже зазначалося, змінної можна привласнити значення. Крім цього діяння, може бути створювати такі діяння:
Особливі змінні (Позиційні змінні)
При виклику команди або сценарію з аргументами, ім'я команди і її аргументи є позиційними змінними. Позиційними вони називаються, тому що всередині сценарію звернення до них відбувається по позиції в командному рядку. Давайте розглянемо їх на практиці:
З наведеного скрипта видно, що:
зберігає ім'я команди, яка запустила сценарій
змінні зберігають 1, 2, 3. n позицію аргументів команди
зберігає кількість аргументів команди
зберігає значення всіх аргументів командного рядка через пробіл
зберігає значення всіх аргументів командного рядка у вигляді списку
зберігає PID запущеного сценарію (процесу)
зберігає значення PID останнього процесу, запущеного в тлі
Статус виходу запущеної останньої програми. Він так само називається кодом умови, кодом повернення. За угодою, нульове значення статуси закінчення відповідає значенню false і позначає невдале закінчення процесу. Код виходу рівний Нуль відповідає true і позначає успішне закінчення програми. (В нашому прикладі ls display_ завершилося з помилкою і кодом виходу 2, тому що файлу або каталогу display_ не існує)
Діяння над змінними 2
Бажаю доповнити можливі дії над змінним: зрушення і ініціалізація змінних. Знову ж, простіше буде зрозуміти дані діяння на практиці:
Як видно, команда shift "зрушує" позиційні властивості, в кінцевому підсумку чого властивості "зсуваються" на одну позицію вліво.
X <- $1, $1 <- $2, $2 <- $3, $3 <- $4, и т.д.
Колишній аргумент $ 1 втрачається, але аргумент $ 0 (ім'я файлу сценарію) залишається без змін.
Команда set встановлює позиційні змінні на базі переданих їй аргументів, розбитих пробілами. Відповідно, команді set може бути передати у вигляді аргументів і висновок будь-якої команди в вигляді set $ (command). Властивості команди set можна подивитися тут.
P.S. Забув вказати на такий момент.Не вважаючи використання посилання на змінну в форматі $ ім'я_змінної, можливий і такий синтаксис: $. Даний синтаксис дозволяє з'єднати змінну з іншим текстом. приклад:
Як видно в прикладі, при спробі вивести значення змінної $ var10ander виводиться порожній рядок, і правильно, тому що такої змінної немає. при укладанні змінної у фігурні дужки - значення змінної об'єднується з наступним текстом.
На сьогодні це все. Думаю уявлення про те, як працюють змінні в bash, я виклав зрозуміло. Бажаю для вас побільше практики! # image.jpg
У минулій темі про демона syslogd і команді logrotate, я згадував про планувальнику Linux - cron. На даний момент в своєму блозі я більш ретельно розповім про роботу даного планіровщіка.cronПланіровщік зад.
Непоганого часу, гості! В сьогоднішній статті бажаю торкнутися такої великої теми як Незмінні вираження. Думаю всім зрозуміло, що тема регексов (так незмінні вираження називаються на сленгу) - Неохім.
Версія для печатіНе міг залишити поза увагою в блозі дану тему. У даній статті опишу те, що є на просторах інтернету в великих кількостях. Напевно, в головному роблю це для себе, у вигляді шпаргалки.
Непоганого часу, читачі мого блогу! У даній статті бажаю систематизувати свої пізнання щодо основних механізмів роботи програмних потоків і каналів в інтерпретаторі і в загальному в ОС Linux, а так ж.
На даний момент на йтиметься про журнал в Linux. Функція системного журналирования (т.зв. "логи" або логирование) - це основне джерело інформації про роботу системи і помилки. Журнал роботи може осущ.