Програмування в bash - частина 3

в безпечний наш поняття Ми вивчимо 2 дуже корисні інструменти для програмування, які чудово працюють в Bash. Навчіться творити функції і визначити труби спочатку може здатися складним, але потім ми побачимо величезне утиліта що вони нам забезпечують.

Труби

Зокрема, і не роблячи занадто багато поворотів, конвеєр - це метод, який дозволяє направляти результат одного процесу як вхідний інший, що дає низку переваг, таких як зменшення рядків коду, відмова від змінних зберігання для результатів та поліпшення ефективність сценарію.

Трубу загалом розпізнають, маючи символ | що дозволяє об'єднувати вирази; Хоча він використовується за замовчуванням, є й інші способи створення труб.

Приклад: надрукувати останні повідомлення ядра

#dmesg дозволяє переглядати останні повідомлення ядра та завантажені драйвери # під час завантаження системи; tail друкує останні частини файлу або # команди

dmesg | хвіст

Хоча вони можуть ускладнюватися скільки завгодно, основна структура конвеєра дозволяє використовувати результат однієї команди як вхід для наступної, що може забезпечити введення нової команди, якщо ми продовжуємо додавати послідовні конвеєри.

функції

Функції - це набір операторів, які згруповані разом, щоб їх можна було виконувати кілька разів, не переписуючи їх. Це рівнозначно думці, що коли ми навчимося готувати той чи інший вид їжі, ми будемо писати його рецепт на аркуші, і кожного разу, коли ми хочемо готувати цю їжу, ми радимося з рецептом, замість того, щоб переписувати новий аркуш з тим самим рецептом.

Мабуть, найголовніше у функціях - це можливість передачі параметрів, даних, які вони використовуватимуть для їх обробки та створення вихідних даних. Його структура така:

функція function-name {

процеси

}

Приклад: функція, яка показує служби, які працюють за протоколом tcp. Ми також можемо побачити, як застосовувати більше труб.

# Ми визначаємо назву функції, вона може бути тією, яка нам подобається.

функція services_tcp {

#cat об'єднує та відображає вміст папки / etc / services, яка містить # служби, що містять усі служби з відповідними портами.

# перший grep бере список і видаляє коментарі, а –v ми інвертуємо результат

# другий grep показує лише ті, що пов'язані з tcp

cat / etc / services | grep –v "^ #" | grep tcp

}

Коли нам потрібно виконати цю функцію, ми просто повинні викликати її за назвою:

tcp_services

У цьому випадку він працює без параметрів; У тому випадку, якщо вони у них є, ми повинні їх додати, щоб функція працювала належним чином, інакше функція не працюватиме належним чином. Використання return дозволяє функції повертати значення в результаті процесу.

Приклад: функція з вхідними параметрами, яка обчислює суму 2 чисел.

#! / бін / баш
сума функції ()
{
# з дозвольте нам виконати операцію всередині лапок
нехай "результат = $ 1 + $ 2"

#return дозволяє повернути ціле значення. Після того, як повернення буде виконано, значення буде внесено всередину змінної $?
повернути $ результат;
}
 
# Викликається функція sum і ми передаємо 2 вхідні параметри.

додайте 2 3

# друкує значення $? з відлунням, що оцінює фактичне значення змінної в лапках
echo -e "Результат = $?";

<< Перейти до попередньої частини

Дякую Хуану Карлосу Ортісу!


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: Мігель Анхель Гатон
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.

  1.   Вказівник Nill - сказав він

    Я не впевнений, але оператор return функцій служить лише для повернення цілого числа від 0 до 255, наприклад, кодів помилок "виходу", як правило, 0, якщо все добре, а для інших випадків - інше число. Незважаючи на те, що це працює в прикладі, я вважаю, що не є гарною практикою повертати результат із поверненням.
    Там я кажу нісенітницю! око! ха!

  2.   Джуанк - сказав він

    Правда залишила у мене сумнів. У будь-якому випадку, щоб уникнути проблем із функціями, ми можемо замінити return на echo у тому випадку, якщо функція прагне повернути або надрукувати значення або рядок.

  3.   Абель С. Гора Біг - сказав він

    Це правда, для вирішення цього питання ви можете використовувати команду bc, у функції підсумовування можна використовувати: result = `echo $ 1 + $ 2 | bc -ql`

  4.   Луїс Мігель - сказав він

    добре,

    Я хотів би знати, де я можу зберегти файли bash для загальної роботи системи, і це не каталог bin, але може бути домашнім для резервного копіювання.

    Дякую і вітаю.

  5.   Хоакін - сказав він

    Щиро дякую, я починаю зі сценаріїв, і правда в тому, що це дуже корисно, ви дуже люб'язно ділитесь своїми знаннями!
    привіт

    1.    давайте використовувати linux - сказав він

      Дякую! Обійми!
      Пабло

  6.   Крістіан - сказав він

    Синтаксична помилка: "(" несподівано
    Я отримую помилку при спробі запустити приклад, я скопіював його точно так само

    Що може бути? я на ubuntu 14.10