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/bashMens 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/bashpå 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/bashekko '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.