logo

Басх функције

У овој теми смо демонстрирали основе басх функција и како оне функционишу у басх схелл скриптовима.

Функције у басх скриптовању су одлична опција за поновно коришћење кода. Басх функција се може дефинисати као скуп команди које се могу позвати неколико пута унутар басх скрипте. Сврха функције у басх-у је да вам помогне да ваше скрипте учините читљивијим и да избегнете писање истог кода изнова и изнова. Такође омогућава програмерима да разбију компликован и дугачак код на мале делове који се могу позвати кад год је потребно. Функције се могу позивати било када и више пута, што ће нам омогућити да поново користимо, оптимизујемо и минимизирамо код.

Следе неке кључне тачке о басх функцијама:

  • Функција мора бити декларисана у схелл скрипти пре него што можемо да је користимо.
  • Аргументи се могу пренети функцијама и приступити унутар функције као , , итд.
  • Локалне променљиве се могу доделити унутар функције, а опсег таквих променљивих биће само та одређена функција.
  • Уграђене команде Басх шкољке могу се заменити коришћењем функција.

Синтакса

Синтакса за декларисање басх функције може се дефинисати у два формата:

1. Први метод почиње именом функције, праћено заградама. То је најпожељнији и најчешће коришћени метод:

 function_name () { commands } 

Једнолинијска верзија се може навести на следећи начин:

 function_name () { commands; } 

2. Други метод почиње са резервисаном речју функције, праћеном именом функције:

ламбда функција јава
 function function_name { commands } 

Једнолинијска верзија се може навести на следећи начин:

 function function_name { commands; } 

У поређењу са већином програмских језика, Басх функције су донекле ограничене. Хајде да разумемо концепт уз помоћ неких примера:

Пример: Метод 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. 

Пассинг Аргументс

Као и већина програмских језика, такође можемо пренети аргументе и обрадити податке у басх функцијама. Можемо да убацимо податке у функцију на сличан начин као што је прослеђивање аргумената командне линије басх скрипти.

питхон __наме__

Да бисмо проследили било који број аргумената басх функцији, од нас се тражи да их убацимо одмах иза имена функције. Морамо применити размаке између имена функције и аргумената. Такође ће бити одличан избор да користите двоструке наводнике око аргумената како бисте спречили погрешно упаривање аргумената са размацима у њима.

Следе неке кључне тачке о прослеђивању аргумената басх функцијама:

  • Датим аргументима се приступа као , , ... $н, што одговара позицији аргумената иза имена функције.
  • Променљива

    У овој теми смо демонстрирали основе басх функција и како оне функционишу у басх схелл скриптовима.

    Функције у басх скриптовању су одлична опција за поновно коришћење кода. Басх функција се може дефинисати као скуп команди које се могу позвати неколико пута унутар басх скрипте. Сврха функције у басх-у је да вам помогне да ваше скрипте учините читљивијим и да избегнете писање истог кода изнова и изнова. Такође омогућава програмерима да разбију компликован и дугачак код на мале делове који се могу позвати кад год је потребно. Функције се могу позивати било када и више пута, што ће нам омогућити да поново користимо, оптимизујемо и минимизирамо код.

    Следе неке кључне тачке о басх функцијама:

    • Функција мора бити декларисана у схелл скрипти пре него што можемо да је користимо.
    • Аргументи се могу пренети функцијама и приступити унутар функције као $1, $2, итд.
    • Локалне променљиве се могу доделити унутар функције, а опсег таквих променљивих биће само та одређена функција.
    • Уграђене команде Басх шкољке могу се заменити коришћењем функција.

    Синтакса

    Синтакса за декларисање басх функције може се дефинисати у два формата:

    1. Први метод почиње именом функције, праћено заградама. То је најпожељнији и најчешће коришћени метод:

     function_name () { commands } 

    Једнолинијска верзија се може навести на следећи начин:

     function_name () { commands; } 

    2. Други метод почиње са резервисаном речју функције, праћеном именом функције:

     function function_name { commands } 

    Једнолинијска верзија се може навести на следећи начин:

     function function_name { commands; } 

    У поређењу са већином програмских језика, Басх функције су донекле ограничене. Хајде да разумемо концепт уз помоћ неких примера:

    Пример: Метод 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. 

    Пассинг Аргументс

    Као и већина програмских језика, такође можемо пренети аргументе и обрадити податке у басх функцијама. Можемо да убацимо податке у функцију на сличан начин као што је прослеђивање аргумената командне линије басх скрипти.

    Да бисмо проследили било који број аргумената басх функцији, од нас се тражи да их убацимо одмах иза имена функције. Морамо применити размаке између имена функције и аргумената. Такође ће бити одличан избор да користите двоструке наводнике око аргумената како бисте спречили погрешно упаривање аргумената са размацима у њима.

    Следе неке кључне тачке о прослеђивању аргумената басх функцијама:

    • Датим аргументима се приступа као $1, $2, $3 ... $н, што одговара позицији аргумената иза имена функције.
    • Променљива $0 је резервисана за име функције.
    • Променљива $# се користи за чување броја позиционих аргумента/параметара датих функцији.
    • Променљиве $* и $@ се користе за држање свих аргумената/параметара датих функцији.
      • Када се $* користи са двоструким наводницима (тј. '$*'), проширује се на један стринг одвојен размаком. На пример, '$1 $2 $н итд'.
      • Када се $@ користи са двоструким наводницима (тј. '$@'), проширује се на посебан стринг. На пример, '$1' '$2' '$н' итд.
      • Када се $* и $# не користе са двоструким наводницима, оба су иста.

    Следи код који илуструје процедуру како прослеђивати аргументе функцијама и приступити аргументима унутар функције.

    Басх Сцрипт

     #!/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.' 

    Излаз

    Басх функције

    У овој скрипти смо додали вредности 'Ми', 'добродошли', 'ви', 'он' и 'Јаватпоинт' након што смо позвали фунцтион_аргументс. Те вредности се преносе на фунцтион_аргументс као параметри и ускладиштени у локалној променљивој. Међутим, за разлику од других језика, тумач чува прослеђене вредности у унапред дефинисане променљиве, које се затим именују у складу са редоследом параметара који се преносе.

    На пример,

    'Ми' реч се чува у променљивој 1 .
    'Добродошли' реч се чува у променљивој 2 .
    'ти' реч се чува у променљивој 3 .
    'на' реч се чува у променљивој 4 .
    'Јаватпоинт' реч се чува у променљивој 5 .

    Вариабле Сцопе

    Глобалне променљиве су дефинисане као променљиве којима се може приступити било где у оквиру скрипте без обзира на опсег. Подразумевано, све променљиве су дефинисане као глобалне варијабле, чак и ако су декларисане унутар функције. Такође можемо креирати променљиве као локалну променљиву. Локалне променљиве се могу декларисати унутар тела функције помоћу ?лоцал? кључне речи када су додељене по први пут. Они су доступни само унутар те функције. Можемо креирати локалне променљиве са истим именом у различитим функцијама. Да бисмо додали локалну променљиву, можемо користити следећу синтаксу:

     local var_name= 

    Да бисте боље разумели како опсег променљивих функционише у Басх скриптовању, погледајте следећи пример:

    Басх Сцрипт

     #!/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.' 

    Излаз

    Басх функције

    Према излазу, ако поставимо локалну променљиву унутар тела функције са истим именом као постојећа глобална променљива, онда ће она имати предност над глобалном променљивом. Глобалне променљиве се могу мењати унутар функције.

    Повратне вредности

    Већина програмских језика има концепт враћања вредности за функције. То значи да функција мора да пошаље податке назад на првобитну локацију позива. За разлику од функција у 'правим' програмским језицима, Басх функција не пружа подршку за враћање вредности када се позове. Међутим, они нам омогућавају да поставимо статус повратка који је сличан начину на који програм или команда излази са излазним статусом. Када се басх функција заврши, њена повратна вредност је статус последњег извршеног израза у функцији. Враћа 0 за статус успеха и децимални број различит од нуле у опсегу 1-255 за неуспех.

    Статус повратка се може назначити коришћењем кључне речи 'ретурн' и додељује се променљивој $?. Наредба ретурн прекида функцију и ради као излазни статус функције.

    На пример, размотрите следећи код:

    Басх Сцрипт

     #!/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 $? 

    Излаз

    Басх функције

    Још једна боља опција за враћање вредности из функције је слање вредности на стдоут Користећи одјек или принтф команде, као што је приказано у наставку:

    Басх Сцрипт

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

    Излаз

     Welcome to Javatpoint. 

    Оверридинг Цоммандс

    Имамо опцију да заменимо басх команде креирањем функције са истим именом као и команда коју ћемо заменити. На пример, ако желимо да заменимо команду 'ецхо', онда морамо да креирамо функцију са именом 'ецхо'.

    Овај концепт надјачавања басх команди може бити од помоћи у неким сценаријима као што је када желимо да користимо команду са одређеним опцијама. Такође, када не волимо да читавој команди пружимо опције за неколико пута у оквиру скрипте. У таквим случајевима можемо заменити уграђену басх команду за команду са опцијама. Сада, хајде да разумемо концепт надјачавања команди у Басх Схелл Сцриптинг-у уз помоћ неких примера:

    Пример

    У овом примеру смо поништили команду 'ецхо' и додали временску ознаку у облику аргумента команди 'ецхо'.

    Басх Сцрипт

     #!/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.' 

    Излаз

    Басх функције

    Закључак

    У овој теми смо демонстрирали Басх функцију. Басх функција се сматра блоком кода за вишекратну употребу који је развијен за обављање одређене операције. Једном када је дефинисан, може се позвати неколико пута у оквиру скрипте.


    је резервисана за име функције.
  • Променљива $# се користи за чување броја позиционих аргумента/параметара датих функцији.
  • Променљиве $* и $@ се користе за држање свих аргумената/параметара датих функцији.
    • Када се $* користи са двоструким наводницима (тј. '$*'), проширује се на један стринг одвојен размаком. На пример, ' $н итд'.
    • Када се $@ користи са двоструким наводницима (тј. '$@'), проширује се на посебан стринг. На пример, '' '' '$н' итд.
    • Када се $* и $# не користе са двоструким наводницима, оба су иста.

Следи код који илуструје процедуру како прослеђивати аргументе функцијама и приступити аргументима унутар функције.

Басх Сцрипт

 #!/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.' 

Излаз

Басх функције

У овој скрипти смо додали вредности 'Ми', 'добродошли', 'ви', 'он' и 'Јаватпоинт' након што смо позвали фунцтион_аргументс. Те вредности се преносе на фунцтион_аргументс као параметри и ускладиштени у локалној променљивој. Међутим, за разлику од других језика, тумач чува прослеђене вредности у унапред дефинисане променљиве, које се затим именују у складу са редоследом параметара који се преносе.

пандас итерровс

На пример,

'Ми' реч се чува у променљивој 1 .
'Добродошли' реч се чува у променљивој 2 .
'ти' реч се чува у променљивој 3 .
'на' реч се чува у променљивој 4 .
'Јаватпоинт' реч се чува у променљивој 5 .

Вариабле Сцопе

Глобалне променљиве су дефинисане као променљиве којима се може приступити било где у оквиру скрипте без обзира на опсег. Подразумевано, све променљиве су дефинисане као глобалне варијабле, чак и ако су декларисане унутар функције. Такође можемо креирати променљиве као локалну променљиву. Локалне променљиве се могу декларисати унутар тела функције помоћу ?лоцал? кључне речи када су додељене по први пут. Они су доступни само унутар те функције. Можемо креирати локалне променљиве са истим именом у различитим функцијама. Да бисмо додали локалну променљиву, можемо користити следећу синтаксу:

 local var_name= 

Да бисте боље разумели како опсег променљивих функционише у Басх скриптовању, погледајте следећи пример:

Басх Сцрипт

 #!/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.' 

Излаз

Басх функције

Према излазу, ако поставимо локалну променљиву унутар тела функције са истим именом као постојећа глобална променљива, онда ће она имати предност над глобалном променљивом. Глобалне променљиве се могу мењати унутар функције.

како вратити низ у Јави

Повратне вредности

Већина програмских језика има концепт враћања вредности за функције. То значи да функција мора да пошаље податке назад на првобитну локацију позива. За разлику од функција у 'правим' програмским језицима, Басх функција не пружа подршку за враћање вредности када се позове. Међутим, они нам омогућавају да поставимо статус повратка који је сличан начину на који програм или команда излази са излазним статусом. Када се басх функција заврши, њена повратна вредност је статус последњег извршеног израза у функцији. Враћа 0 за статус успеха и децимални број различит од нуле у опсегу 1-255 за неуспех.

Статус повратка се може назначити коришћењем кључне речи 'ретурн' и додељује се променљивој $?. Наредба ретурн прекида функцију и ради као излазни статус функције.

На пример, размотрите следећи код:

Басх Сцрипт

 #!/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 $? 

Излаз

Басх функције

Још једна боља опција за враћање вредности из функције је слање вредности на стдоут Користећи одјек или принтф команде, као што је приказано у наставку:

мрежна архитектура

Басх Сцрипт

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

Излаз

 Welcome to Javatpoint. 

Оверридинг Цоммандс

Имамо опцију да заменимо басх команде креирањем функције са истим именом као и команда коју ћемо заменити. На пример, ако желимо да заменимо команду 'ецхо', онда морамо да креирамо функцију са именом 'ецхо'.

Овај концепт надјачавања басх команди може бити од помоћи у неким сценаријима као што је када желимо да користимо команду са одређеним опцијама. Такође, када не волимо да читавој команди пружимо опције за неколико пута у оквиру скрипте. У таквим случајевима можемо заменити уграђену басх команду за команду са опцијама. Сада, хајде да разумемо концепт надјачавања команди у Басх Схелл Сцриптинг-у уз помоћ неких примера:

Пример

У овом примеру смо поништили команду 'ецхо' и додали временску ознаку у облику аргумента команди 'ецхо'.

Басх Сцрипт

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

Излаз

Басх функције

Закључак

У овој теми смо демонстрирали Басх функцију. Басх функција се сматра блоком кода за вишекратну употребу који је развијен за обављање одређене операције. Једном када је дефинисан, може се позвати неколико пута у оквиру скрипте.