Giunsa magamit ang mga pag-andar sa Bash gamit ang kini nga Unix shell-based, POSIX nga nagsunod nga sinultian sa kompyuter. Ingon usa ka sinultian, ang pag-andar niini naglangkob sa paghubad sa mga mando sa Linux, nga gitugotan kami nga i-awtomatiko ang among gibalikbalik nga proseso ug maghimo usab mga mando gikan sa mga mando sa operating system. Niini nga artikulo atong susihon unsaon paggamit mga gimbuhaton sa bash. Girekomenda nako ang pagbasa sa artikulo kung giunsa paghimo sa imong kaugalingon nga mga script gamit ang bash.
Sa iskrip nga gisugyot namon gigamit namon ang sinultian nga Bash aron makapangita usa ka file, nahibal-an ang ngalan niini. Alang niini gamiton namon ang pangitaa ang mando apan sa tabang sa mga gimbuhaton nga kaniadto gipasabut sa giingon nga iskrip. Kinahanglan nimo nga hunahunaon ang usa ka kakaiba o limitasyon sa Bash nga wala sa tanan nga sinultian: aron tawagan ang usa ka kalihokan kinahanglan kini ipasabut kaniadto.
Index
Gihubit ang mga gimbuhaton
Adunay duha ka paagi aron mahibal-an ang mga gimbuhaton: adunay o wala ang pagdeklarar sa gimbuhaton:
function nombre_funcion () { # codigo }
o kining usa pa, nga mao ang gigamit nako nga makita mo unya.
nombre_funcion () { # codigo }
Mao usab Naghatag usab ang Bash usa ka pamaagi aron maipasa ang mga parameter ug ibalik ang mga sangputanan. nga atong makita sa umaabot nga mga artikulo.
#!/usr/bin/env bash # ~/.bin/encontrar # encuentra archivos a partir de la descripción de su nombre en un directorio específico # # Por Pedro Ruiz Hidalgo # version 1.0.0 # Copyright © enero 2017 # # EXIT_OK=0 EXIT_BAD=66 PATRON=$1 DIRECTORIO=$2 autor () { echo -e "\nPedro Ruiz Hidalgo @petrorum. Copyright © 2017\n" } ayuda () { echo -e "\nencontrar [PATRON] [DIRECTORIO]\n" } noparams () { echo -e "\nSon necesarios dos parámetros\nencontrar -h para ayuda\n" read -p "¿Quieres ver la ayuda? (S|s)" -n 1 -r if [[ $REPLY =~ ^[Ss]$ ]]; then echo "" ayuda fi } nodir () { echo -e "\nDirectorio no Existe\n" } if [[ $PATRON == "-h" ]]; then ayuda exit $EXIT_OK fi if [[ $PATRON == "-a" ]]; then autor exit $EXIT_OK fi if [ $# -lt 2 ]; then noparams else if [ -d $DIRECTORIO ]; then echo "" find $DIRECTORIO -name $PATRON* echo "" exit $? else nodir exit EXIT_BAD fi fi
Pagtuki sa script
Kahubitan
Alang sa bash matag proseso nga malampuson nga nahuman kinahanglan adunay code nga "0" ingon usa ka signal. Gilaraw sa mga linya nga 12 ug 13 ang mga pagdumala sa mga error code EXIT_OK alang sa kalampusan y EXIT_BAD alang sa exit on failed.
Sa mga linya nga 15 ug 16, ang mga variable sa PATTERN ug DIRECTORY gihatagan una ($ 1) ug ikaduha ($ 2) nga mga parameter nga makita sa linya sa mando pagkahuman sa ngalan sa script, ingon sa makita unya namo kung gipatuman namon kini.
Diha sa linya 18 gihimo namon ang una namong gimbuhaton. Ang kalihokan nga gitawag «tagsulat» nagpakita sa tagsulat sa tagsulat kung tawgon namon kini nga may "-a" argumento nga makita sa kung sa mga linya 50 ~ 54. Ang lantugi "-ug" gikan sa linya 23 nagtugot sa pagpakita sa han-ay sa «sunod nga linya» pinaagi sa pag-encode «\ n».
Ang pagtawag sa noparams (mga linya 28 ~ 37) mao ang katungdanan sa pagdumala sa mga hitabo nga kinahanglan mahitabo kung ang script gitawag nga wala’y mga parameter. Gipakita namon, maayong pagkasira taliwala sa mga bag-ong mga code sa linya, usa ka mensahe nga gipakita nga ang iskrip kinahanglan ipatuman nga adunay duha nga mga parameter, pagkahuman usa ka kapilian (linya 31) gipakita aron magamit basaha Giaghat ka niini nga ipadayon ang "S" o "s" kung gusto nimo ipakita ang tabang. Sa linya 32 literal nga giingon naton: 'kung ang tubag (moabut sa amon sa variable $ REPLY) naglangkob sa bisan unsang mga karakter nga naa sa uppercase o lowercase ', pagkahuman (linya 33) nagpakita usa ka walay sulod nga linya (linya 34) ug gipatuman ang tabang function (linya 23 ~ 26).
Ang nodir function (mga linya 39 ~ 42) ipatuman kung mamatikdan namon nga ang direktoryo diin gisulayan ang pagpangita wala maglungtad.
Pag-obra
Niini nga naa na kita gihubit ang tanan nga kinahanglanon nga gimbuhaton aron mapatuman ang among programa, nga sa tinuud magsugod sa linya 44, pagsusi kung ang una sa mga parameter nga madawat sa script mao ang "-h", kung kini tinuod, ipatuman ang tabang nga gimbuhaton ug paggawas nga nagpasabut sa normal nga pagtapos.
Kung ang PATTERN (unang parameter nga gihulagway sa linya 15) mao ang "-a", gipakita ang tagsulat nga nagsunod sa parehas nga mekanismo nga gipatin-aw sa miaging parapo alang sa kapilian nga "-h".
Naa sa linya Gikontrol kini nga wala kami makadawat mas mubu sa duha nga mga parameterSa kini nga kaso, ang noparams function gipatuman, pagkahuman sa linya nga 60 nahibal-an namon kung ang direktoryo diin gusto namon buhaton ang pagpangita adunay, kung adunay kini, usa ka walay sulod nga linya ang gipakita, ang pangitaa ang mando uban ang adres sa direktoryo diin gusto namon ipadayon ang pagpangita nga gisundan sa sundanan (pagsugod sa ngalan sa file nga among gipangita) usa ka bag-ong blangko nga linya ug pinaagi sa paggawas $? gitugyan namon ang output sa among script sa resulta nga gihimo sa pagpangita. Sa kaso sa kahimtang sa sayop ang pagkaanaa sa direktoryo (linya 67) naghimo kami usa ka tawag sa function sa nodir ug mogawas kami nga nagpaila usa ka dili normal nga pagtapos.
Pagpatuman ug pagsulay
$ encontrar $ encontrar -a $ encontrar -h $ encontrar index aljflaskjf #directorio no existe $ encontrar index public_html $
En pagsunod sa mga artikulo bahin sa Bash atong makita ang mga mekanismo alang sa mogamit mga parameter sa mga gimbuhatonMakita usab naton kung giunsa isulti ang datos sa pagbalik gikan sa parehas.
Gihangyo ko ug gilauman nga kini nga post nahimong mapuslanon alang kanimo.
Usa ka komento, biyai ang imoha
hello,
makapaikag kaayo ug tin-aw kaayo.
Usa ra ka sulat; ang usa ka $ nawala sa linya 68 sa atubangan sa variable EXIT_BAD.
Magpadayon ako nga makakat-on nga sigurado sa imong mga artikulo.