Kuinka käsitellä komentoriviargumentteja basskriptissä

How Handle Command Line Arguments Bash Script



Monissa tapauksissa bash -komentosarjat vaativat argumenttiarvoja, jotta komentosarjan syöttövaihtoehdot voidaan antaa. Voit käsitellä komentoriviargumentteja bash -skriptissä kahdella tavalla. Yksi on käyttämällä argumenttimuuttujat ja toinen on käyttämällä nousuja toiminto. Tässä opetusohjelmassa näytetään, kuinka voit käsitellä komentoriviargumentteja.

Argumenttimuuttujien käyttäminen:

Argumenttimuuttuja alkaa $ 0: sta. Pääskriptitiedoston nimi tallennetaan arvoon $ 0, joka vastaanottaa argumenttiarvot komentoriviargumenteista. Jos komentorivillä annetaan kaksi argumenttia, argumenttien arvot vastaanotetaan muuttujissa $ 1 ja $ 2 peräkkäin.







Esimerkki -1: Kolmen numeerisen arvon lähettäminen argumentteina

Luo bash -tiedosto ja lisää seuraava koodi. Komentosarja saa kolme argumenttiarvoa ja tallentaa $ 1, $ 2 ja $ 3. Se laskee argumenttien kokonaismäärän, tulostaa argumenttien arvot silmukalla ja ilman silmukkaa. Tulosta lopuksi kaikkien argumenttiarvojen summa.



#!/bin/bash

# Lasketaan argumenttien kokonaismäärä
heitti pois 'Argumenttien kokonaismäärä: $#'

# Argumenttien lukeminen yksitellen
heitti pois 'Ensimmäinen argumentin arvo: $ 1'
heitti pois 'Toinen argumentin arvo: $ 2'
heitti pois 'Kolmas argumentin arvo: $ 3'

# Argumenttien lukeminen silmukan avulla
vartenargvalsisään '[email protected]'
tehdä
heitti pois -n ''$ argval''
tehty

# Argumenttiarvojen lisääminen
summa= $(($ 1+2 dollaria+3 dollaria))

# tulosta tulos
heitti pois -Ja '' nSumman tulos =$ summa''

Suorita bash -tiedosto kolmella numeerisella argumenttiarvolla.



$lyödäcmdline1.shviisikymmentä 35 viisitoista





Esimerkki -2: Tiedostonimen käyttäminen argumenttina

Luo bash -tiedosto ja lisää seuraava koodi minkä tahansa tiedoston merkkien kokonaismäärän laskemiseksi. Tässä tiedostonimi välitetään komentoriviargumenttina.

#!/bin/bash
Tiedoston nimi=$ 1
totaalinen hiili=``WC -c $ tiedostonimi``
heitti pois 'Merkkien kokonaismäärä on$ yhteensächar''

Suorita bash -skripti, jonka tiedostonimi on yksi argumentin arvo, ja suorita toinen komento tarkistaaksesi kyseisen tiedoston merkkien kokonaismäärän. Tässä argumentti -arvona käytetään työntekijä.txt -tiedostoa. Työntekijä.txt -tiedoston merkkien kokonaismäärä on 204.



$lyödäcmdline2.sh työntekijä.txt
$WC -ctyöntekijä.txt

Getopts -toiminnon käyttäminen:

Jos haluat tallentaa tietoja tietokantaan tai mihin tahansa tiedostoon tai luoda raportin tietyssä muodossa komentoriviargumenttien arvojen perusteella nousuja toiminto on paras vaihtoehto tehtävän suorittamiseen. Se on sisäänrakennettu linux-toiminto. Joten voit helposti käyttää tätä toimintoa komentosarjassasi lukemaan muotoiltuja tietoja komentoriviltä.

Esimerkki -1: Argumenttien lukeminen getopts -funktion avulla

Luo bash -tiedosto ja lisää seuraava komentosarja ymmärtääksesi sen käyttöä nousuja toiminto. Getopts -toimintoa käytetään while -silmukan kanssa komentorivin argumenttivaihtoehtojen ja argumenttien arvojen lukemiseen. Tässä käytetään 4 vaihtoehtoa, jotka ovat 'Minä', 'n', 'm' ja 'Ja' . case -lausetta käytetään vastaamaan tiettyä vaihtoehtoa ja tallentamaan argumentin arvo muuttujaan. Tulosta lopuksi muuttujan arvot.

#!/bin/bash
sillä aikaa nousuja ':minussa:'vihainen;tehdä
tapaus $ arg sisään
i) ID=$ OPTARG;;
n) Nimi=$ OPTARG;;
m) Valmistuspäivä=$ OPTARG;;
Ja) Viimeinen käyttöpäivä=$ OPTARG;;
esac
tehty
heitti pois -Ja '' n$ ID $ Nimi $ Manufacturing_date $ Expire_date n''

Suorita tiedosto seuraavilla asetuksilla ja argumenttiarvoilla. Tässä p100 on -i -arvon arvo, 'Hot Cake' on -n -vaihtoehdon arvo, '01-01-2018 'on -m -vaihtoehdon arvo ja '06-01-2018 ′ on arvon - e vaihtoehto.

$lyödäcmdline3.sh-ip001-n 'Kuuma kakku' -m '01-01-2018 ' -Ja '06-01-2018 '

Kun sinun on lähetettävä yksinkertaisia ​​arvoja komentosarjassa, on parempi käyttää argumenttimuuttujia. Mutta jos haluat lähettää tietoja muotoilulla tavalla, on parempi käyttää getopts -funktiota argumenttien arvojen noutamiseen. Katso lisätietoja katsomalla video !