Hvordan håndterer man kommandolinjeargumenter i Bash?

Hvordan Handterer Man Kommandolinjeargumenter I Bash



I Linux bruger vi kommandolinjeargumenter som input til bash-scriptet. Bash kan tage disse kommandolinjeargumenter sekventielt og analysere dem som en mulighed. Disse argumenter giver dig mulighed for at påvirke handlingerne og scriptets output dynamisk.

Du kan konfigurere disse argumenter forskelligt for at påvirke input og output. Derfor er det vigtigt at håndtere kommandolinjeargumenter i bash, men mange nye brugere skal lære, hvordan man gør det. Så i denne guide vil vi forklare forskellige måder at håndtere kommandolinjeargumenter på i bash.







Hvordan håndterer man kommandolinjeargumenter i Bash?

Der er forskellige måder at håndtere kommandolinjeargumenter i Bash, så lad os tage et kig på dem for at få kort information:



Getopt-funktionen



Getopt-funktionen er praktisk, da den giver muligheder og syntaks til at definere og analysere argumenter i bash. Det er en indbygget funktion i Linux, som du kan bruge, mens du opretter en databasefil eller rapport i et bestemt format baseret på argumenterne. Getopt-funktionen hjælper med at analysere de korte kommandolinjeargumenter, fordi der er to typer argumenter:





  • Korte argumenter: Disse er argumenterne med et enkelt tegn efterfulgt af en bindestreg. For eksempel er -a, -l, -h osv. nogle få eksempler på enkeltargumenter.

  • Lange argumenter: Disse er argumenterne med flere tegn efterfulgt af en dobbelt bindestreg. Der er forskellige eksempler på lange argumenter, såsom –alle, –liste, –hjælp osv.

Lad os tage et eksempel, hvor vi vil håndtere kommandolinjeargumenterne ved hjælp af getopt-værktøjet. Vi har lavet et bash-script ved navn 'getopt.sh', der indeholder følgende information:



!/ beholder / bash

mens getopts 'A:B:C:D:' detaljer; gør

sag ' $detaljer ' i

EN )

ekko 'Borgerens navn er $OPTARG ' ;;

B )

ekko 'Borger-ID er $OPTARG ' ;;

C )

ekko 'Fødestedet er $OPTARG ' ;;

D )

ekko 'Besættelse er $OPTARG ' ;;

* )

Afslut 1 ;;

esac

Færdig

flytte ' $(($OPTING -1) )'



hvis [ ! -Med $1 ] ; derefter

ekko 'Ægteskabelig status $1'

andet

ekko 'Ingen poster'

Afslut 1

være



hvis [ ! -Med $2 ] ; derefter

ekko 'Familiemedlemmer $2'

være

Lad os nu udføre scriptet med de nødvendige argumenter i inputtet:

Som du kan se på billedet ovenfor, kører vi kun scriptet med getopt-funktioner og tilføjer derefter normale argumenter for at få det komplette resultat.

Brug af flag

Flag er intet andet end enkelte tegn efterfulgt af bindestreger (-). Når vi sender argumenterne ved hjælp af getopt-funktionen, bruger vi flag. -a, -b, -c er nogle eksempler på flag. Et script kræver f.eks. en borgers navn, id, sted, alder og beskæftigelse. Derfor brugte vi flag j, k, l, m, n, til at definere borgerens navn, ID, sted, alder og beskæftigelse samtidigt:

#!/bin/bash

Mens getopts j:k:l:m:n: flag_info

gør

sag ' ${flag_info} ' i
< ol >
< at > j ) borgernavn = ${OPTARG} ;; at >
< at > k ) borgerid = ${OPTARG} ;; at >
< at > l ) placere = ${OPTARG} ;; at >
< at > m ) alder = ${OPTARG} ;; at >
< at > n ) beskæftigelse = ${OPTARG} ;; at >
ol >
esac

Færdig

ekko 'Her er de indtastede detaljer:'

ekko 'Borgers navn: $borgernavn ' ;

ekko 'Borger-id: $borger ' ;

ekko 'Placere: $sted ' ;

ekko 'Alder: $alder ' ;

ekko 'Beskæftigelse: $beskæftigelse ' ;

Scriptet vil give følgende resultat i terminalen:

. /< manuskript > .sh -j Danny -k 476 -l Toronto -m 25 -n Forfatter

Ved brug af [e-mailbeskyttet] Med løkker

Det ' [e-mailbeskyttet] variabel er intet andet end rækken af ​​alle input-argumenter. Vi kan videregive et hvilket som helst antal input ved hjælp af ' [e-mailbeskyttet] ' variabel. Du kan bruge denne variabel som en loop til at iterere gennem argumenterne. Det ' [e-mailbeskyttet] ” variabel kommer så godt med; du kender ikke inputstørrelsen og kan ikke tage de positionelle argumenter. Derfor kan du bruge ' [e-mailbeskyttet] ”  i stedet for at definere getopt-funktionen igen og igen. Her er et eksempel på brug af loops og [e-mailbeskyttet] sammen i et script:

#!/bin/bash

på en = ( '$ @ )



hvis [ $# -gt 1 ]

derefter



tilføje =$ ( ( ${num[0]} + ${num[1]} ) )

ekko 'Addition af alle tal er: $tilføj '



subtraktion =$ ( ( ${num[0]} - ${num[1]} - ${num[2]} ) )

ekko 'Subtraktion af tallene er: $subtraktion '



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

ekko 'Multiplikation af tallene er: $ multiplicere '



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

ekko 'Afdeling af ${num[0]} og ${num[1]} er: $division 1 '



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

ekko 'Opdeling af ${num[1]} og ${num[2]} er: $division 2 '



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

ekko 'Opdeling af ${num[0]} og ${num[2]} er: $division 2 '



være

Ovenstående script udfører forskellige aritmetiske beregninger baseret på kommandolinjeargumenterne. For eksempel har vi indtastet 50, 35 og 15 som input:

Brug af positionsparametre

Du kan få adgang til positionsparametrene, da de først får adgang til $1, derefter $2, og så videre. Lad os for eksempel oprette et script, der læser et navn som det første argument og derefter en by som det andet. Men hvis du først passerer byen og derefter navnet, så betragter den navnet som byen og omvendt. Lad os tage et dybere dyk ned i følgende script for at forstå dette koncept:

#!/bin/bash

ekko 'Her er de indtastede detaljer'

ekko 'navn $1'

ekko 'by $2'

Du skal tilføje navn og by på tidspunktet for udførelse af scriptet i terminalen:

Afslutter

Dette er alt, hvad du behøver at vide om metoderne til at håndtere kommandolinjeargumenter i bash. Vi har forklaret forskellige tilgange, du kan prøve med de relevante eksempler. Der er forskellige kommandoer, hvis du vil tilføje argumenter i scriptet. Så sørg for at besøge Linuxhint for at lære mere om dem.