BASH programavimas

Kaip sukurti „Bash“ funkciją, kuri grąžina masyvą

Kaip sukurti „Bash“ funkciją, kuri grąžina masyvą
Iš pirmo žvilgsnio gali pasirodyti, kad masyvo grąžinimas iš „Bash“ funkcijos nėra realus. Atsižvelgiant į visus pranašumus, gali būti naudinga pakviesti kelis metodus, kad sukonstruotumėte masyvus, kad išskaidytumėte visų tinkamų parametrų YAD skambučiui rinkimo procesą.

Yra daugybė priežasčių, kodėl verta atkurti BASH masyvą:

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ą:

Pažvelkime dabar į šio scenarijaus veikimą.

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ą.

Atvirojo kodo komercinių žaidimų variklių uostai
Nemokami atvirojo kodo ir įvairių platformų žaidimų varikliai gali būti naudojami žaidžiant senus ir kai kuriuos gana naujus žaidimų pavadinimus. Šiam...
Geriausi „Linux“ komandinės eilutės žaidimai
Komandų eilutė yra ne tik jūsų didžiausias sąjungininkas naudojant „Linux“, bet ir pramogų šaltinis, nes ją galite naudoti norėdami žaisti daug įdomių...
Geriausios „Linux“ skirtos „Gamepad“ žemėlapių sudarymo programos
Jei jums patinka žaisti žaidimus „Linux“ su žaidimų pultu, o ne įprasta klaviatūra ir pelės įvesties sistema, yra keletas jums naudingų programų. Daug...