logo

Функції Bash

У цій темі ми продемонстрували основи функцій bash і те, як вони працюють у сценаріях оболонки bash.

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

Нижче наведено деякі ключові моменти щодо функцій bash:

  • Функція має бути оголошена в сценарії оболонки, перш ніж ми зможемо її використовувати.
  • Аргументи можуть бути передані функціям і доступні всередині функції як , тощо.
  • Локальні змінні можна призначати всередині функції, і область видимості таких змінних буде лише цією конкретною функцією.
  • Вбудовані команди оболонки Bash можна перевизначати за допомогою функцій.

Синтаксис

Синтаксис для оголошення функції bash можна визначити у двох форматах:

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

 function_name () { commands } 

Однорядкова версія може бути згадана нижче:

 function_name () { commands; } 

2. Другий метод починається із зарезервованого слова функції, за яким слідує назва функції:

покажчик розіменування c
 function function_name { commands } 

Однорядкова версія може бути згадана нижче:

 function function_name { commands; } 

Порівняно з більшістю мов програмування, функції Bash дещо обмежені. Давайте зрозуміємо концепцію за допомогою кількох прикладів:

Приклад: Спосіб 1

 #!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP 

Вихід

 Welcome to Javatpoint. 

Приклад: спосіб 2

 #!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP 

Вихід

 Welcome to Javatpoint. 

Передача аргументів

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

багатопотоковість java

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

Нижче наведено кілька ключових моментів щодо передачі аргументів у функції bash:

  • Доступ до поданих аргументів здійснюється як , , ... $n, що відповідає позиції аргументів після імені функції.
  • Змінна

    У цій темі ми продемонстрували основи функцій bash і те, як вони працюють у сценаріях оболонки bash.

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

    Нижче наведено деякі ключові моменти щодо функцій bash:

    • Функція має бути оголошена в сценарії оболонки, перш ніж ми зможемо її використовувати.
    • Аргументи можуть бути передані функціям і доступні всередині функції як $1, $2 тощо.
    • Локальні змінні можна призначати всередині функції, і область видимості таких змінних буде лише цією конкретною функцією.
    • Вбудовані команди оболонки Bash можна перевизначати за допомогою функцій.

    Синтаксис

    Синтаксис для оголошення функції bash можна визначити у двох форматах:

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

     function_name () { commands } 

    Однорядкова версія може бути згадана нижче:

     function_name () { commands; } 

    2. Другий метод починається із зарезервованого слова функції, за яким слідує назва функції:

     function function_name { commands } 

    Однорядкова версія може бути згадана нижче:

     function function_name { commands; } 

    Порівняно з більшістю мов програмування, функції Bash дещо обмежені. Давайте зрозуміємо концепцію за допомогою кількох прикладів:

    Приклад: Спосіб 1

     #!/bin/bash JTP () { echo 'Welcome to Javatpoint.' } JTP 

    Вихід

     Welcome to Javatpoint. 

    Приклад: спосіб 2

     #!/bin/bash function JTP { echo 'Welcome to Javatpoint.' } JTP 

    Вихід

     Welcome to Javatpoint. 

    Передача аргументів

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

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

    Нижче наведено кілька ключових моментів щодо передачі аргументів у функції bash:

    • Доступ до поданих аргументів здійснюється як $1, $2, $3 ... $n, що відповідає позиції аргументів після імені функції.
    • Змінна $0 зберігається зарезервованою для імені функції.
    • Змінна $# використовується для зберігання кількості позиційних аргументів/параметрів, наданих функції.
    • Змінні $* та $@ використовуються для зберігання всіх аргументів/параметрів, наданих функції.
      • Коли $* використовується з подвійними лапками (тобто '$*'), він розгортається до одного рядка, розділеного пробілом. Наприклад, '$1 $2 $n тощо'.
      • Коли $@ використовується з подвійними лапками (тобто, '$@' ), він розширюється до окремого рядка. Наприклад, '$1' '$2' '$n' тощо.
      • Якщо $* та $# не використовуються з подвійними лапками, вони обидва однакові.

    Нижче наведено код, який ілюструє процедуру передачі аргументів функціям і доступу до аргументів у функції.

    Скрипт Bash

     #!/bin/bash #Script to pass and access arguments function_arguments() { echo $1 echo $2 echo $3 echo $4 echo $5 } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.' 

    Вихід

    Функції Bash

    У цьому сценарії ми додали значення «Ми», «ласкаво просимо», «ви», «увімкнено» та «Javatpoint» після виклику аргументів_функції. Ці значення передаються в аргументи_функції як параметри та зберігаються в локальній змінній. Однак, на відміну від інших мов, інтерпретатор зберігає передані значення у заздалегідь визначених змінних, які потім називаються відповідно до послідовності передачі параметрів.

    Наприклад,

    'ми' слово зберігається в змінній 1 .
    'ласкаво просимо' слово зберігається в змінній 2 .
    'ви' слово зберігається в змінній 3 .
    'на' слово зберігається в змінній 4 .
    'Javatpoint' слово зберігається в змінній 5 .

    Область змінної

    Глобальні змінні визначаються як змінні, до яких можна отримати доступ будь-де в сценарії, незалежно від області. За замовчуванням усі змінні визначаються як глобальні змінні, навіть якщо вони оголошені всередині функції. Ми також можемо створювати змінні як локальні змінні. Локальні змінні можуть бути оголошені в тілі функції за допомогою ?local? ключове слово, коли вони призначені вперше. Вони доступні лише всередині цієї функції. Ми можемо створювати локальні змінні з однаковими іменами в різних функціях. Щоб додати локальну змінну, ми можемо використати такий синтаксис:

     local var_name= 

    Щоб краще зрозуміти, як область змінних працює в сценаріях Bash, перегляньте наступний приклад:

    Скрипт Bash

     #!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' 

    Вихід

    Функції Bash

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

    Повернуті значення

    Більшість мов програмування мають концепцію повернення значення для функцій. Це означає, що функція має надіслати дані назад у початкове місце виклику. На відміну від функцій у «справжніх» мовах програмування, функція Bash не підтримує повернення значення під час її виклику. Однак вони дозволяють нам встановити статус повернення, подібний до того, як програма або команда завершуються зі статусом виходу. Коли функція bash завершує роботу, її значення, що повертається, є статусом останнього виконаного оператора у функції. Він повертає 0 для статусу успіху та ненульове десяткове число в діапазоні 1-255 для помилки.

    Статус повернення можна вказати за допомогою ключового слова 'return', яке призначається змінній $?. Оператор return завершує роботу функції та працює як статус виходу функції.

    Наприклад, розглянути наступний код:

    Скрипт Bash

     #!/bin/bash #Setting up a return status for a function print_it () { echo Hello $1 return 5 } print_it User print_it Reader echo The previous function returned a value of $? 

    Вихід

    Функції Bash

    Іншим кращим варіантом повернення значення з функції є надсилання значення до stdout використовуючи луна або printf команди, як показано нижче:

    Скрипт Bash

     #!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet 

    Вихід

     Welcome to Javatpoint. 

    Перевизначення команд

    У нас є можливість перевизначити команди bash, створивши функцію з такою ж назвою, як і команда, яку ми збираємося перевизначити. Наприклад, якщо ми хочемо перевизначити команду «echo», ми повинні створити функцію з назвою «echo».

    Ця концепція перевизначення команд bash може бути корисною в деяких сценаріях, наприклад, коли ми хочемо використовувати команду з певними параметрами. Крім того, коли нам не подобається надавати всій команді параметри кілька разів у сценарії. У таких випадках ми можемо замінити вбудовану команду bash для команди з параметрами. Тепер давайте зрозуміємо концепцію перевизначення команд у сценаріях оболонки Bash за допомогою кількох прикладів:

    приклад

    У цьому прикладі ми замінили команду 'echo' і додали мітку часу у формі аргументу до команди 'echo'.

    Скрипт Bash

     #!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo $1 } echo 'Welcome to Javatpoint.' 

    Вихід

    Функції Bash

    Висновок

    У цій темі ми продемонстрували функцію Bash. Функція Bash розглядається як блок багаторазового коду, розроблений для виконання певної операції. Після визначення його можна викликати кілька разів у сценарії.


    зберігається зарезервованою для імені функції.
  • Змінна $# використовується для зберігання кількості позиційних аргументів/параметрів, наданих функції.
  • Змінні $* та $@ використовуються для зберігання всіх аргументів/параметрів, наданих функції.
    • Коли $* використовується з подвійними лапками (тобто '$*'), він розгортається до одного рядка, розділеного пробілом. Наприклад, ' $n тощо'.
    • Коли $@ використовується з подвійними лапками (тобто, '$@' ), він розширюється до окремого рядка. Наприклад, '' '' '$n' тощо.
    • Якщо $* та $# не використовуються з подвійними лапками, вони обидва однакові.

Нижче наведено код, який ілюструє процедуру передачі аргументів функціям і доступу до аргументів у функції.

Скрипт Bash

 #!/bin/bash #Script to pass and access arguments function_arguments() { echo  echo  echo  echo  echo  } #Calling function_arguments function_arguments 'We''welcome''you''on''Javatpoint.' 

Вихід

Функції Bash

У цьому сценарії ми додали значення «Ми», «ласкаво просимо», «ви», «увімкнено» та «Javatpoint» після виклику аргументів_функції. Ці значення передаються в аргументи_функції як параметри та зберігаються в локальній змінній. Однак, на відміну від інших мов, інтерпретатор зберігає передані значення у заздалегідь визначених змінних, які потім називаються відповідно до послідовності передачі параметрів.

Наприклад,

'ми' слово зберігається в змінній 1 .
'ласкаво просимо' слово зберігається в змінній 2 .
'ви' слово зберігається в змінній 3 .
'на' слово зберігається в змінній 4 .
'Javatpoint' слово зберігається в змінній 5 .

Область змінної

Глобальні змінні визначаються як змінні, до яких можна отримати доступ будь-де в сценарії, незалежно від області. За замовчуванням усі змінні визначаються як глобальні змінні, навіть якщо вони оголошені всередині функції. Ми також можемо створювати змінні як локальні змінні. Локальні змінні можуть бути оголошені в тілі функції за допомогою ?local? ключове слово, коли вони призначені вперше. Вони доступні лише всередині цієї функції. Ми можемо створювати локальні змінні з однаковими іменами в різних функціях. Щоб додати локальну змінну, ми можемо використати такий синтаксис:

приклади автоматів dfa
 local var_name= 

Щоб краще зрозуміти, як область змінних працює в сценаріях Bash, перегляньте наступний приклад:

Скрипт Bash

 #!/bin/bash v1='A' v2='B' my_var () { local v1='C' v2='D' echo 'Inside Function' echo 'v1 is $v1.' echo 'v2 is $v2.' } echo 'Before Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' my_var echo 'After Executing the Function' echo 'v1 is $v1.' echo 'v2 is $v2.' 

Вихід

Функції Bash

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

Повернуті значення

Більшість мов програмування мають концепцію повернення значення для функцій. Це означає, що функція має надіслати дані назад у початкове місце виклику. На відміну від функцій у «справжніх» мовах програмування, функція Bash не підтримує повернення значення під час її виклику. Однак вони дозволяють нам встановити статус повернення, подібний до того, як програма або команда завершуються зі статусом виходу. Коли функція bash завершує роботу, її значення, що повертається, є статусом останнього виконаного оператора у функції. Він повертає 0 для статусу успіху та ненульове десяткове число в діапазоні 1-255 для помилки.

dfs проти bfs

Статус повернення можна вказати за допомогою ключового слова 'return', яке призначається змінній $?. Оператор return завершує роботу функції та працює як статус виходу функції.

Наприклад, розглянути наступний код:

Скрипт Bash

 #!/bin/bash #Setting up a return status for a function print_it () { echo Hello  return 5 } print_it User print_it Reader echo The previous function returned a value of $? 

Вихід

Функції Bash

Іншим кращим варіантом повернення значення з функції є надсилання значення до stdout використовуючи луна або printf команди, як показано нижче:

прямий ланцюг

Скрипт Bash

 #!/bin/bash print_it () { local my_greet='Welcome to Javatpoint.' echo '$my_greet' } my_greet='$(print_it)' echo $my_greet 

Вихід

 Welcome to Javatpoint. 

Перевизначення команд

У нас є можливість перевизначити команди bash, створивши функцію з такою ж назвою, як і команда, яку ми збираємося перевизначити. Наприклад, якщо ми хочемо перевизначити команду «echo», ми повинні створити функцію з назвою «echo».

Ця концепція перевизначення команд bash може бути корисною в деяких сценаріях, наприклад, коли ми хочемо використовувати команду з певними параметрами. Крім того, коли нам не подобається надавати всій команді параметри кілька разів у сценарії. У таких випадках ми можемо замінити вбудовану команду bash для команди з параметрами. Тепер давайте зрозуміємо концепцію перевизначення команд у сценаріях оболонки Bash за допомогою кількох прикладів:

приклад

У цьому прикладі ми замінили команду 'echo' і додали мітку часу у формі аргументу до команди 'echo'.

Скрипт Bash

 #!/bin/bash #Script to override command using function echo () { builtin echo -n `date +'[%m-%d %H:%M:%S]'` ': ' builtin echo  } echo 'Welcome to Javatpoint.' 

Вихід

Функції Bash

Висновок

У цій темі ми продемонстрували функцію Bash. Функція Bash розглядається як блок багаторазового коду, розроблений для виконання певної операції. Після визначення його можна викликати кілька разів у сценарії.