Yra daugybė priežasčių, kodėl verta atkurti BASH masyvą:
- Masyvų gyvenimo trukmę valdyti yra paprasčiau, nes jie priskiriami lokaliai.
- Norint pasiekti tikslumą laiku, gali būti naudinga gauti masyvus iš metodų.
- Kad būtų palaikomi žurnalo algoritmo metodai, galima atmesti masyvų grąžinimo metodų pavadinimus.
Galite manyti, kad Bashas praranda galimybę grąžinti funkcijų masyvus. Tačiau tai nėra tiksliai teisinga. Gautą masyvą galima perkelti į metodą remiantis nuoroda, atsižvelgiant į C / C ++ kūrėjų nurodymus. Tokia strategija leidžia metodui ir toliau neturėti nuorodų į visuotinį kintamąjį. Šiame straipsnyje parodomi aiškūs šios bylos atvejai.
1 pavyzdys: masyvo grąžinimas
Prisijunkite prie savo „Linux“ sistemos ir atidarykite komandų terminalą, kad galėtumėte tęsti. Sukursime „Bash“ failą pavadinimu „scenarijus.sh “naudojant paliesti komanda grąžinti masyvą naudodama „Bash“ funkciją. Scenarijus yra toks:
$ touch scenarijus.sh
Naujai sukurtą failą galite peržiūrėti Namai kataloge. Atidarykite šį failą ir užrašykite pridėtą kodą tokiu, koks yra. Čia mes bandome sukurti asociacinį masyvą naudodami metodo argumentą iš sąrašo leidimo.
Iš pradžių mes sukūrėme funkciją foo ().
Šioje programoje pašalinome „deklaruoti“ terminą, kuris yra iš anksto sukonfigūruota „Bash“ komanda, leidžianti mums pakeisti arba pritaikyti atributus, kintamiesiems sutepto apvalkalo metodus ir parodyti šių atributų reikšmes mūsų „shell“ komandos terminalo ruožas. Be to, jis gali būti naudojamas apibrėžti ilgą kintamąjį. Galiausiai jis naudojamas kintamiesiems apibrėžti.
„Arr“ masyvui pridėjome „fooval“ vertę.
Raktinis žodis „-A“ naudojamas kuriant NAME asociacinis masyvas, jei palaikomas. Turime naudoti sąrašą / masyvą kaip visuotinį kintamąjį, o tai reiškia, kad šį metodą gali atlikti tik metodas, o ne scenarijus.
Mes taip pat sukūrėme dar vieną masyvą, pavadintą „myarr“, skirtą naudoti kaip nuorodą. Bashas leidžia santykinio kintamojo arr vardui būti nepanašus į reliatyvaus kintamojo myarr pavadinimą.
Po to, aštuntoje eilutėje, mes perdavėme "myarr" masyvą Bashui foo () funkcija kaip nuoroda.
Anksčiau mes naudojome kilpą „už“, kad atspausdintume „arr“ ir „myarr“ masyvus foo () funkcija.
Dabar patikrinsime šio kodo rezultatą. Norėdami paleisti pirmiau nurodytą kodą, vykdykite komandą „Bash“. Matote, kad masyvas buvo grąžintas į funkciją ir tada atspausdintas.
scenarijus „$ bash“.sh
2 pavyzdys: grąžinti kitą masyvą
Pažvelkime į kitą masyvų grąžinimo į funkciją pavyzdį. Atidarykite komandų terminalą ir sukurkite naują failą pavadinimu „openvpn.žurnalas “naudojant paliesti komandą taip:
$ touch openvpn.žurnalas
Dabar atidarykite „openvpn.log “failą ir įrašykite šį tekstą į šį failą, kaip parodyta. Išsaugokite ir uždarykite šį failą.
Vėlgi atidarykite komandos apvalkalą ir sukurkite kitą failą pavadinimu „scenarijus.sh “, naudojant paliesti komandą pridėti failą „Bash“ scenarijų.
$ touch scenarijus.sh
Tada atidarykite „scenarijų.sh “failą ir pridėkite šį kodą prie šio failo tokį, koks yra. Išsaugokite ir uždarykite šį failą. Šis scenarijus naudos metodą, kuris nuskaito reikšmes / eilutes iš dokumento ir pateikia masyvą:
- Masyvo deklaravimas: klientai
- Paskirkite grąžintą metodo masyvą masyvo klientams
- Rodyti masyvą: klientai
Pažvelkime dabar į šio scenarijaus veikimą.
- Mes paskelbėme visuotinį „klientų“ masyvą, naudodami raktinį žodį „deklaruoti“, po kurio seka „-A“.“
- „ReadArray“ () buvo apibrėžta funkcija. Šioje funkcijoje mes paskelbėme keletą vietinių kintamųjų. Vietinis kintamasis „masyvas“ yra tuščias, tačiau „i“ ir „j“ buvo apibrėžti 0 reikšme, kuri bus naudojama kaip iteratoriai.
- Naudodami skaitymo režimą, mes perskaitysime failo tekstą naudodami iteratorius indeksams didinti.
- Eilutė „klientai [$ ((i ++))] + = $ LINE;“ yra naudojamas teksto eilutėms pridėti prie visame pasaulyje apibrėžto masyvo „klientai“.
- Po to „j ++“ pereina prie kito indekso.
- Kintamasis „$ 1“ naudojamas išsaugoti ir grąžinti masyvą, kuris ką tik buvo sukurtas iš „openvpn“.žurnalas “tekstinis failas.
- Funkcijos išorėje eilutė buvo paskelbta „$ string“ ir jai buvo suteikta failo kelias kaip reikšmė.
- Ši eilutė perduota skaitykite Array veikia kaip nuoroda skaityti tekstą iš šio failo.
- Po to masyvas „klientai“ buvo išspausdintas ir visas jame esantis tekstas buvo rodomas vienoje eilutėje.
- Dabar mes parodysime pranešimą, kad masyvas nebėra tuščias.
- Kilpa „už“ buvo naudojama masyvo „klientai“ turiniui konvertuoti į masyvo tipą ir deklaruoti turinio indeksą naudojant teiginį „echo“ $ i: $ klientai [$ i].“
- Galiausiai mes parodėme pranešimą ir atskirai atspausdinome kai kurias konvertuotas masyvo reikšmes kaip vieną indeksuotą masyvo poziciją.
Dabar patikrinkime šio „Bash“ scenarijaus išvestį. Paleiskite „Bash“ komandą, kad įvykdytumėte „scenarijų.sh “byla. Kaip matote, pirmasis aido teiginys atspausdins visą tekstą iš „openvpn.žurnalas “failas, kuris buvo įrašytas į masyvą„ klientai “kaip viena eilutė. Antrasis aido sakinys parodys eilutės pranešimą. Trečiame aido sakinyje masyvas „klientai“ bus rodomas indeksuota forma, nes jis ką tik buvo konvertuotas. Ketvirtasis vėl parodys pranešimą. Paskutiniame bus rodomas „klientų“ masyvo turinys atskirai.
Išvada
Šis straipsnis parodė, kaip grąžinti masyvus (ypač asociatyvius masyvus) į funkciją naudojant „deklaruoti“ integruotą komandą su dviem pavyzdžiais. Tikiuosi, kad šis straipsnis padėjo jums geriau suprasti šią temą.