logo

Bash функции

В тази тема демонстрирахме основите на bash функциите и как те работят в bash shell скриптове.

Функциите в bash скриптове са чудесна възможност за повторно използване на код. Bash функцията може да се дефинира като набор от команди, които могат да бъдат извикани няколко пъти в bash скрипта. Целта на функцията в bash е да ви помогне да направите вашите скриптове по-четими и да избегнете писането на един и същи код отново и отново. Той също така позволява на разработчиците да разбият сложен и дълъг код на малки части, които могат да бъдат извикани, когато е необходимо. Функциите могат да бъдат извиквани по всяко време и многократно, което ще ни позволи да използваме повторно, оптимизираме и минимизираме кода.

Следват някои ключови точки относно bash функциите:

  • Една функция трябва да бъде декларирана в скрипта на обвивката, преди да можем да я използваме.
  • Аргументите могат да бъдат предавани на функциите и достъпни вътре във функцията като , и т.н.
  • Локалните променливи могат да бъдат присвоени във функцията и обхватът на такива променливи ще бъде само тази конкретна функция.
  • Вградените команди на Bash shell могат да бъдат заменени с помощта на функции.

Синтаксис

Синтаксисът за деклариране на bash функция може да бъде дефиниран в два формата:

1. Първият метод започва с името на функцията, последвано от скоби. Това е най-предпочитаният и често използван метод:

 function_name () { commands } 

Едноредовата версия може да бъде спомената по-долу:

 function_name () { commands; } 

2. Вторият метод започва със запазената дума за функцията, последвана от името на функцията:

java catch опитайте
 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 shell скриптове.

    Функциите в bash скриптове са чудесна възможност за повторно използване на код. Bash функцията може да се дефинира като набор от команди, които могат да бъдат извикани няколко пъти в bash скрипта. Целта на функцията в bash е да ви помогне да направите вашите скриптове по-четими и да избегнете писането на един и същи код отново и отново. Той също така позволява на разработчиците да разбият сложен и дълъг код на малки части, които могат да бъдат извикани, когато е необходимо. Функциите могат да бъдат извиквани по всяко време и многократно, което ще ни позволи да използваме повторно, оптимизираме и минимизираме кода.

    Следват някои ключови точки относно bash функциите:

    • Една функция трябва да бъде декларирана в скрипта на обвивката, преди да можем да я използваме.
    • Аргументите могат да бъдат предавани на функциите и достъпни вътре във функцията като $1, $2 и т.н.
    • Локалните променливи могат да бъдат присвоени във функцията и обхватът на такива променливи ще бъде само тази конкретна функция.
    • Вградените команди на Bash shell могат да бъдат заменени с помощта на функции.

    Синтаксис

    Синтаксисът за деклариране на 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“, след като извикахме function_arguments. Тези стойности се предават на аргументи_на_функцията като параметри и се съхраняват в локална променлива. Въпреки това, за разлика от други езици, интерпретаторът съхранява предадените стойности в предварително дефинирани променливи, които след това се наименуват според последователността на предаваните параметри.

    Например,

    'ние' дума се съхранява в променливата 1 .
    'добре дошли' дума се съхранява в променливата 2 .
    'Вие' дума се съхранява в променливата 3 .
    'На' дума се съхранява в променливата 4 .
    „Javatpoint“ дума се съхранява в променливата 5 .

    Променлив обхват

    Глобалните променливи се дефинират като променливите, които могат да бъдат достъпни навсякъде в рамките на скрипта, независимо от обхвата. По подразбиране всички променливи се дефинират като глобални променливи, дори ако са декларирани във функцията. Можем също да създаваме променливи като локална променлива. Локалните променливи могат да бъдат декларирани в тялото на функцията с ?local? ключова дума, когато се присвояват за първи път. Те са достъпни само вътре в тази функция. Можем да създаваме локални променливи с едно и също име в различни функции. За да добавим локална променлива, можем да използваме следния синтаксис:

     local var_name= 

    За да разберете по-добре как работи обхватът на променливите в Bash Scripting, вижте следния пример:

    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 функции

    Друг по-добър вариант за връщане на стойност от функция е да изпратите стойността до стандартен изход използвайки ехо или 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 Shell Scripting с помощта на някои примери:

    Пример

    В този пример сме заменили командата „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“, след като извикахме function_arguments. Тези стойности се предават на аргументи_на_функцията като параметри и се съхраняват в локална променлива. Въпреки това, за разлика от други езици, интерпретаторът съхранява предадените стойности в предварително дефинирани променливи, които след това се наименуват според последователността на предаваните параметри.

Например,

'ние' дума се съхранява в променливата 1 .
'добре дошли' дума се съхранява в променливата 2 .
'Вие' дума се съхранява в променливата 3 .
'На' дума се съхранява в променливата 4 .
„Javatpoint“ дума се съхранява в променливата 5 .

година на тримесечия

Променлив обхват

Глобалните променливи се дефинират като променливите, които могат да бъдат достъпни навсякъде в рамките на скрипта, независимо от обхвата. По подразбиране всички променливи се дефинират като глобални променливи, дори ако са декларирани във функцията. Можем също да създаваме променливи като локална променлива. Локалните променливи могат да бъдат декларирани в тялото на функцията с ?local? ключова дума, когато се присвояват за първи път. Те са достъпни само вътре в тази функция. Можем да създаваме локални променливи с едно и също име в различни функции. За да добавим локална променлива, можем да използваме следния синтаксис:

 local var_name= 

За да разберете по-добре как работи обхватът на променливите в Bash Scripting, вижте следния пример:

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  return 5 } print_it User print_it Reader echo The previous function returned a value of $? 

Изход

Bash функции

Друг по-добър вариант за връщане на стойност от функция е да изпратите стойността до стандартен изход използвайки ехо или 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 Shell Scripting с помощта на някои примери:

Пример

В този пример сме заменили командата „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 се счита за блок от многократно използваем код, разработен за извършване на специфична операция. След като бъде дефиниран, той може да бъде извикан няколко пъти в рамките на скрипт.