Kuinka käsitellä komentoriviargumentteja Bashissa?

Kuinka Kasitella Komentoriviargumentteja Bashissa



Linuxissa käytämme komentoriviargumentteja bash-skriptin syötteenä. Bash voi ottaa nämä komentorivin argumentit peräkkäin ja jäsentää ne vaihtoehtona. Näiden argumenttien avulla voit vaikuttaa toimintoihin ja komentosarjan ulostuloon dynaamisesti.

Voit määrittää nämä argumentit eri tavalla vaikuttamaan tuloon ja lähtöön. Siksi komentorivin argien käsittely bashissa on välttämätöntä, mutta monien uusien käyttäjien on opittava tekemään se. Joten tässä oppaassa selitämme erilaisia ​​tapoja käsitellä komentoriviargumentteja bashissa.







Kuinka käsitellä komentoriviargumentteja Bashissa?

Bashissa on useita tapoja käsitellä komentorivin argeja, joten katsotaanpa niitä saadaksesi lyhyttä tietoa:



Getopt-toiminto



Getopt-funktio on kätevä, koska se tarjoaa vaihtoehdot ja syntaksin argumenttien määrittämiseen ja jäsentämiseen bashissa. Se on Linuxin sisäänrakennettu toiminto, jota voit käyttää luodessasi tietokantatiedostoa tai raporttia tietyssä muodossa argumenttien perusteella. Getopt-funktio auttaa jäsentämään lyhyitä komentoriviargumentteja, koska argumentteja on kahdenlaisia:





  • Lyhyet argumentit: Nämä ovat yksimerkkisiä argumentteja, joita seuraa yhdysmerkki. Esimerkiksi -a, -l, -h jne. ovat muutamia esimerkkejä yksittäisistä argumenteista.

  • Pitkät argumentit: Nämä ovat monimerkkisiä argumentteja, joita seuraa kaksoisviiva. On olemassa useita esimerkkejä pitkistä argumenteista, kuten –all, –list, –help jne.

Otetaan esimerkki, jossa käsittelemme komentorivin argumentteja getopt-apuohjelmalla. Olemme luoneet bash-skriptin nimeltä 'getopt.sh', joka sisältää seuraavat tiedot:



!/ roskakori / lyödä

sillä aikaa getopts 'A:B:C:D:' yksityiskohdat; tehdä

tapaus ' $tiedot ' sisään

A )

kaiku 'Kansalainen nimi on $OPTARG ' ;;

B )

kaiku 'Kansalaistunnus on $OPTARG ' ;;

C )

kaiku 'Syntymäpaikka on $OPTARG ' ;;

D )

kaiku 'Ammatti on $OPTARG ' ;;

* )

poistu 1 ;;

esac

tehty

siirtää ' $(($OPTING -1) )'



jos [ ! -Kanssa $1 ] ; sitten

kaiku 'Siviilisääty $1'

muu

kaiku 'Ei merkintöjä'

poistu 1

olla



jos [ ! -Kanssa 2 dollaria ] ; sitten

kaiku 'Perheenjäsenet 2 dollaria'

olla

Suoritetaan nyt komentosarja syötteessä olevilla vaadituilla argumenteilla:

Kuten yllä olevasta kuvasta näet, suoritamme skriptin vain getopt-funktioilla ja lisäämme sitten normaalit argumentit saadaksemme täydellisen tuloksen.

Lippujen käyttö

Liput ovat vain yksittäisiä merkkejä, joita edeltää tavuviiva (-). Kun välitämme argumentit getopt-funktiolla, käytämme lippuja. -a, -b, -c ovat esimerkkejä lipuista. Esimerkiksi käsikirjoitus vaatii kansalaisen nimen, henkilötunnuksen, paikan, iän ja ammatin. Tästä syystä käytimme lippuja j, k, l, m, n määrittelemään kansalaisen nimen, henkilötunnuksen, paikan, iän ja ammatin samanaikaisesti:

#!/bin/bash

Sillä aikaa getopts j:k:l:m:n: lippu_info

tehdä

tapaus ' ${flag_info} ' sisään
< ol >
< että > j ) kansalaisnimi = ${OPTARG} ;; että >
< että > k ) kansalainen = ${OPTARG} ;; että >
< että > l ) paikka = ${OPTARG} ;; että >
< että > m ) ikä = ${OPTARG} ;; että >
< että > n ) ammatti = ${OPTARG} ;; että >
ol >
esac

tehty

kaiku 'Tässä ovat syötetyt tiedot:'

kaiku 'Kansalaisen nimi: $kansalaisnimi ' ;

kaiku 'Kansalainen tunnus: $kansalainen ' ;

kaiku 'Paikka: $paikka ' ;

kaiku 'Ikä: $ikä ' ;

kaiku 'Ammatti: $ammatti ' ;

Skripti antaa seuraavan tuloksen terminaalissa:

. /< käsikirjoitus > .sh -j Danny -k 476 -l Toronto -m 25 -n Tekijä

Käyttämällä [sähköposti suojattu] Silmukoiden kanssa

' [sähköposti suojattu] ”-muuttuja ei ole muuta kuin kaikkien syöteargumenttien joukko. Voimme välittää minkä tahansa määrän syötteitä käyttämällä ' [sähköposti suojattu] ”muuttuja. Voit käyttää tätä muuttujaa silmukana argumenttien toistamiseen. ' [sähköposti suojattu] ”muuttuja on silloin hyödyllinen; et tiedä syötteen kokoa etkä pysty hyväksymään sijaintiargumentteja. Siksi voit käyttää ' [sähköposti suojattu] ”  sen sijaan, että määrittelisit getopt-funktion uudestaan ​​ja uudestaan. Tässä on esimerkki silmukoiden ja käyttämisestä [sähköposti suojattu] yhdessä käsikirjoituksessa:

#!/bin/bash

yhdellä = ( '$ @ )



jos [ $# -gt 1 ]

sitten



lisätä =$ ( ( ${num[0]} + ${num[1]} ) )

kaiku 'Kaikkien numeroiden yhteenlasku on: $lisää '



vähennyslasku =$ ( ( ${num[0]} - ${num[1]} - ${num[2]} ) )

kaiku 'Lukujen vähentäminen on: $vähennys '



moninkertaistaa =$ ( ( ${num[0]} * ${num[1]} * ${num[2]} ) )

kaiku 'Lukujen kertolasku on: $kerroin '



osasto 1 =$ ( ( ${num[0]} / ${num[1]} ) )

kaiku 'Jako ${num[0]} ja ${num[1]} On: $jako1 '



osasto 2 =$ ( ( ${num[1]} / ${num[2]} ) )

kaiku 'Jako ${num[1]} ja ${num[2]} On: $jako2 '



osasto 3 =$ ( ( ${num[0]} / ${num[2]} ) )

kaiku 'Jako ${num[0]} ja ${num[2]} On: $jako2 '



olla

Yllä oleva komentosarja suorittaa erilaisia ​​aritmeettisia laskutoimituksia komentoriviargumenttien perusteella. Olemme esimerkiksi syöttäneet syötteeksi 50, 35 ja 15:

Paikkaparametrien käyttö

Voit käyttää sijaintiparametreja, kun ne käyttävät ensin $1, sitten $2 ja niin edelleen. Luodaan esimerkiksi komentosarja, joka lukee nimen ensimmäisenä argumenttina ja sitten kaupungin toiseksi. Jos kuitenkin ohitat ensin kaupungin ja sitten nimen, se pitää nimeä kaupunkina ja päinvastoin. Sukeltakaamme syvemmälle seuraavaan käsikirjoitukseen tämän käsitteen ymmärtämiseksi:

#!/bin/bash

kaiku 'Tässä ovat syötetyt tiedot'

kaiku 'nimi $1'

kaiku 'kaupunki $2'

Sinun on lisättävä nimi ja kaupunki, kun suoritat komentosarjan päätteessä:

Käärimistä

Tämä on kaikki mitä sinun tarvitsee tietää menetelmistä käsitellä komentoriviargumentteja bashissa. Olemme selittäneet erilaisia ​​lähestymistapoja, joita voit kokeilla sopivilla esimerkeillä. On olemassa useita komentoja, jos haluat lisätä argumentteja skriptiin. Muista siis käydä Linuxhintissä saadaksesi lisätietoja niistä.