Android

Pag-andar ng Bash

PHP Tutorials | PHP For Beginners

PHP Tutorials | PHP For Beginners

Talaan ng mga Nilalaman:

Anonim

Ang isang function na Bash ay mahalagang isang hanay ng mga utos na maaaring tinawag nang maraming beses. Ang layunin ng isang function ay upang matulungan kang gawin ang iyong mga script ng bash na mas madaling mabasa at upang maiwasan ang pagsusulat ng parehong code nang paulit-ulit.

Kumpara sa karamihan ng mga wika sa pag-programming, ang mga pag-andar ng Bash ay medyo limitado. Sa tutorial na ito, takpan namin ang mga pangunahing kaalaman ng mga pag-andar ng Bash at ipapakita sa iyo kung paano gamitin ang mga ito sa iyong mga script ng shell.

Pagpapahayag ng Bash Function

Ang syntax para sa pagpapahayag ng isang pag-andar ng bash ay napaka-simple. Maaari silang ipahayag sa dalawang magkakaibang mga format:

  1. Ang unang format ay nagsisimula sa pangalan ng pag-andar, na sinusundan ng mga panaklong. Ito ang gusto at mas ginagamit na format.

    function_name () { commands }

    Bersyon ng solong linya:

    function_name () { commands; }

    Ang pangalawang format ay nagsisimula sa salitang inilalaan ng function sinusundan ng pangalan ng pag-andar.

    function function_name { commands }

    Bersyon ng solong linya:

    function function_name { commands; }

Kaunting mga puntos na mapapansin:

  • Ang listahan ng utos sa pagitan ng mga kulot na braces {} ay ang katawan ng pagpapaandar. Ang mga kulot na braces na pumapalibot sa katawan ng pag-andar ay dapat na paghiwalayin sa katawan sa pamamagitan ng mga puwang o newlines. Upang humimok ng isang function na bash, gamitin lamang ang pangalan ng pag-andar. Ang mga utos sa pagitan ng mga kulot na braces ay isinasagawa tuwing ang pagpapaandar ay tinawag sa script ng shell.Ang kahulugan ng pagpapaandar ay dapat mailagay bago ang anumang mga tawag sa function.Kapag gumagamit ng solong linya na "compact" function, isang semicolon ; dapat sundin ang huling utos sa function.You dapat palaging subukan upang mapanatili ang naglalarawan ng iyong mga pangalan ng function.

Upang maunawaan ito nang mas mahusay, tingnan ang sumusunod na halimbawa:

~ / hello_world.sh

#!/bin/bash hello_world () { echo 'hello, world' } hello_world

Suriin natin ang linya ng code ayon sa linya:

  • Sa linya 3 tinukoy namin ang pagpapaandar sa pamamagitan ng pagbibigay nito ng isang pangalan, at pagbubukas ng kulot na brace { na nagmamarka ng pagsisimula ng katawan ng function.Line 4 ay ang function ng katawan. Ang function ng katawan ay maaaring maglaman ng maraming mga utos at variable na mga pagpapahayag.Line 5 , ang pagsasara ng kulot na bracket } , tinukoy ang pagtatapos ng hello_world function.In line 7 kami ay hello_world ng pagpapaandar. Maaari mong isagawa ang pag-andar nang maraming beses hangga't kailangan mo.

Kung nagpapatakbo ka ng script, mag-print ito ng hello, world .

Mga Saklaw ng variable

Ang mga variable ng mundo ay mga variable na maaaring mai-access mula sa kahit saan sa script anuman ang saklaw. Sa Bash, ang lahat ng mga variable sa pamamagitan ng default ay tinukoy bilang global, kahit na ipinahayag sa loob ng pag-andar.

Ang mga lokal na variable ay maaaring ipahayag sa loob ng body function na may local keyword at maaari lamang magamit sa loob ng function na iyon. Maaari kang magkaroon ng mga lokal na variable na may parehong pangalan sa iba't ibang mga pag-andar.

Upang mas mahusay na ilarawan kung paano gumagana ang mga variable na saklaw sa Bash, isaalang-alang natin ang isang halimbawa:

~ / variable_scope.sh

#!/bin/bash var1='A' var2='B' my_function () { local var1='C' var2='D' echo "Inside function: var1: $var1, var2: $var2" } echo "Before executing function: var1: $var1, var2: $var2" my_function echo "After executing function: var1: $var1, var2: $var2"

Nagsisimula ang script sa pamamagitan ng pagtukoy ng dalawang pandaigdigang variable var1 at var2 . Pagkatapos isang function na nagtatakda ng isang lokal na variable var1 at binabago ang global variable var2 .

Before executing function: var1: A, var2: B Inside function: var1: C, var2: D After executing function: var1: A, var2: D

Mula sa output sa itaas, maaari nating tapusin na:

  • Kung nagtakda ka ng isang lokal na variable sa loob ng katawan ng pag-andar na may parehong pangalan bilang isang umiiral na global variable, magkakaroon ito ng unahan sa pandaigdigang variable. Ang mga variable ay maaaring mabago mula sa loob ng pag-andar.

Bumalik na mga Halaga

Hindi tulad ng mga pag-andar sa "tunay" na wika ng programming, hindi pinapayagan ka ng mga function ng Bash na ibalik ang isang halaga kapag tinawag. Kapag nakumpleto ang isang pag-andar ng bash, ang halaga ng pagbabalik nito ay ang katayuan ng huling pahayag na isinagawa sa pagpapaandar, 0 para sa tagumpay at di-zero na numero ng desimal sa saklaw ng 1 - 255 para sa pagkabigo.

Ang katayuan ng pagbabalik ay maaaring matukoy sa pamamagitan ng paggamit ng keyword na return , at itinalaga ito sa variable na $? . Ang pahayag ng return nagtatapos sa pag-andar. Maaari mong isipin ito bilang katayuan ng exit's function.

~ / return_values.sh

#!/bin/bash my_function () { echo "some result" return 55 } my_function echo $?

some result 55

Upang talagang ibalik ang isang di-makatarungang halaga mula sa isang function, kailangan nating gumamit ng iba pang mga pamamaraan. Ang pinakasimpleng pagpipilian ay ang magtalaga ng resulta ng pag-andar sa isang pandaigdigang variable:

~ / return_values.sh

#!/bin/bash my_function () { func_result="some result" } my_function echo $func_result

some result

Ang isa pa, mas mahusay na pagpipilian upang ibalik ang isang halaga mula sa isang function ay upang ipadala ang halaga sa stdout gamit ang echo o printf tulad ng ipinakita sa ibaba:

~ / return_values.sh

#!/bin/bash my_function () { local func_result="some result" echo "$func_result" } func_result="$(my_function)" echo $func_result

some result

Sa halip na func_result lamang ang pagpapaandar na mag-print ng mensahe sa stdout, nagtatalaga kami ng function na output sa variable na func_result gamit ang $() utos na kapalit. Ang variable ay maaaring magamit kung kinakailangan.

Pagpasa ng Mga Pangangatwiran sa Mga Bash Function

Upang maipasa ang anumang bilang ng mga argumento sa pag-andar ng bash lamang ilagay ang mga ito nang tama pagkatapos ng pangalan ng function, na pinaghiwalay ng isang puwang. Ito ay isang mabuting kasanayan upang i-double-quote ang mga argumento upang maiwasan ang maling pag-aarkila ng isang argumento na may mga puwang sa loob nito.

  • Ang mga nakapasa na mga parameter ay $1 , $2 , $3 $n , na katumbas sa posisyon ng parameter pagkatapos ng pangalan ng function.Ang $0 variable ay nakalaan para sa pangalan ng function.Ang $# variable ay humahawak ng bilang ng mga positional parameter / argumento na naipasa sa function.Ang mga $* at $@ variable ay humahawak ng lahat ng posibilidad na mga parameter / argumento na naipasa sa pagpapaandar.
    • Kapag doble na naka-quote, "$*" lumalawak sa isang solong string na pinaghiwalay ng puwang (ang unang karakter ng IFS) - "$1 $2 $n" . Kapag nag-double quote, "$@" lumalawak sa magkakahiwalay na mga string - "$1" "$2" "$n" .Kung hindi doble na sinipi, $* at $@ ay pareho.

Narito ang isang halimbawa:

~ / passing_arguments.sh

#!/bin/bash greeting () { echo "Hello $1" } greeting "Joe"

Hello Joe

Konklusyon

Ang isang function na Bash ay isang bloke ng magagamit na code na dinisenyo upang maisagawa ang isang partikular na operasyon. Kapag natukoy, ang pagpapaandar ay maaaring tawaging maraming beses sa loob ng isang script.

Maaari mo ring basahin ang tungkol sa kung paano gumamit ng isang function ng Bash upang lumikha ng isang di malilimutang utos ng shortcut para sa isang mas mahabang utos.

terminal ng bash