Kaip tvarkyti komandų eilutės argumentus „Bash“ scenarijuje

How Handle Command Line Arguments Bash Script



Daugeliu atvejų „bash“ scenarijams reikia argumentų reikšmių, kad būtų pateiktos scenarijaus įvesties parinktys. „Bash“ scenarijuje komandų eilutės argumentus galite tvarkyti dviem būdais. Vienas iš jų yra naudojant argumentų kintamieji o kitas yra naudojant getoptai funkcija. Šiame vadove parodyta, kaip galite valdyti komandų eilutės argumentus.

Naudojant argumentų kintamuosius:

Argumentų kintamasis prasideda nuo 0 USD. Pagrindinis scenarijaus failo pavadinimas saugomas $ 0, kuris gauna komandų eilutės argumentų reikšmes. Jei komandinėje eilutėje perduodami du argumentai, tada argumentų reikšmės bus gautos 1 ir 2 USD kintamaisiais iš eilės.







-1 pavyzdys: trijų skaitinių reikšmių siuntimas kaip argumentai

Sukurkite „bash“ failą ir pridėkite šį kodą. Scenarijus gaus tris argumentų reikšmes ir bus saugomas 1, 2 ir 3 USD. Jis skaičiuos bendrą argumentų skaičių, spausdins argumentų reikšmes su kilpa ir be kilpos. Galiausiai išspausdinkite visų argumentų reikšmių sumą.



#!/bin/bash

# Skaičiuojamas bendras argumentų skaičius
išmetė „Bendras argumentų skaičius: $#“

# Skaityti argumentų reikšmes atskirai
išmetė „Pirmojo argumento vertė: 1 USD“
išmetė „Antroji argumento vertė: 2 USD“
išmetė „Trečiojo argumento vertė: 3 USD“

# Argumentų reikšmių skaitymas naudojant kilpą
dėlargvalasį '[apsaugotas el. paštas]'
daryti
išmetė -n '$ argval'
padaryta

# Pridėkite argumentų reikšmių
suma= $((1 USD+2 USD+3 USD))

# atsispausdinkite rezultatą
išmetė -Ir ' nSumos rezultatas =$ suma'

Paleiskite „bash“ failą su trimis skaitmeninėmis argumentų reikšmėmis.



$mušticmdline1.shpenkiasdešimt 35 penkiolika





-2 pavyzdys: kaip argumento failo pavadinimą

Sukurkite „bash“ failą ir pridėkite šį kodą, kad suskaičiuotumėte bendrą bet kurio failo simbolių skaičių. Čia failo vardas bus perduotas kaip komandinės eilutės argumentas.

#!/bin/bash
failo pavadinimas=1 USD
totalinė žarna=``wc -c $ failo pavadinimas``
išmetė „Bendras simbolių skaičius yra$ totalchar'

Vykdykite „bash“ scenarijų su failo pavadinimu kaip vieno argumento vertę ir paleiskite kitą komandą, kad patikrintumėte bendrą to failo simbolių skaičių. Čia kaip argumento reikšmė naudojamas failas darbuotojas.txt. Bendras failo „darbuotojas.txt“ simbolių skaičius yra 204.



$mušticmdline2.sh darbuotojas.txt
$wc -cdarbuotojas.txt

Naudojant „getopts“ funkciją:

Jei norite išsaugoti duomenis duomenų bazėje ar bet kuriame faile arba sukurti ataskaitą tam tikru formatu, remdamiesi komandinės eilutės argumentų reikšmėmis getoptai funkcija yra geriausias pasirinkimas atlikti užduotį. Tai yra integruota „Linux“ funkcija. Taigi, galite lengvai naudoti šią funkciją savo scenarijuje, norėdami skaityti suformatuotus duomenis iš komandinės eilutės.

-1 pavyzdys: argumentų skaitymas naudojant funkciją getopts

Sukurkite „bash“ failą ir pridėkite šį scenarijų, kad suprastumėte jo naudojimą getoptai funkcija. Funkcija „getopts“ naudojama kartu su ciklu, kad būtų galima skaityti komandinės eilutės argumentų parinktis ir argumentų reikšmes. Čia naudojamos 4 parinktys „Aš“, „n“, „m“ ir 'Ir' . atvejo sakinys naudojamas tam tikrai parinkčiai suderinti ir argumento reikšmei išsaugoti kintamajame. Galiausiai atsispausdinkite kintamojo reikšmes.

#!/bin/bash
tuo tarpu getoptai ':manyje:'piktas;daryti
atvejis $ arg į
i) ID=$ OPTARG;;
n) vardas=$ OPTARG;;
m) Pagaminimo data=$ OPTARG;;
Ir) Galiojimo pabaigos data=$ OPTARG;;
esac
padaryta
išmetė -Ir ' n$ ID $ Name $ Manufacturing_date $ Expire_date n'

Paleiskite failą naudodami šias parinktis ir argumentų reikšmes. Čia p100 yra parinkties -i vertė, „karštas pyragas“ --n parinkties vertė, „2018-01-01“ -„m“ pasirinkimo vertė, o „06-01-2018“ -vertė - e variantas.

$mušticmdline3.sh-ip001-n 'Karštas pyragas' -m „2018-01-01“ -Ir '06 -01-2018 '

Kai jums reikia nusiųsti paprastas scenarijaus vertes, geriau naudoti argumentų kintamuosius. Bet jei norite siųsti duomenis suformatuotu būdu, geriau naudoti funkciją getopts, kad gautumėte argumentų reikšmes. Norėdami gauti daugiau informacijos, žiūrėkite vaizdo įrašas !