Sådan håndteres kommandolinjeargumenter i et Bash -script

How Handle Command Line Arguments Bash Script



I mange tilfælde kræver bash -scripts argumentværdier for at give inputmuligheder til scriptet. Du kan håndtere kommandolinjeargumenter i et bash -script på to måder. Den ene er ved at bruge argumentvariabler og en anden er ved at bruge getopts fungere. Hvordan du kan håndtere kommandolinjeargumenter vises i denne vejledning.

Brug af argumentvariabler:

Argumentvariablen starter fra $ 0. Hovedskriptfilnavnet er gemt i $ 0, som modtager argumentværdier fra kommandolinjeargumenter. Hvis to argumenter sendes i kommandolinjen, modtages argumentværdierne i $ 1 og $ 2 variabler i rækkefølge.







Eksempel -1: Afsendelse af tre numeriske værdier som argumenter

Opret en bash -fil, og tilføj følgende kode. Scriptet modtager tre argumentværdier og gemmes i $ 1, $ 2 og $ 3. Det vil tælle det samlede antal argumenter, udskrive argumentværdier med loop og uden loop. Til sidst skal du udskrive summen af ​​alle argumentværdier.



#!/bin/bash

# Tæller det samlede antal argumenter
smed ud 'Samlet antal argumenter: $#'

# Læsning af argumentværdier individuelt
smed ud 'Første argumentværdi: $ 1'
smed ud 'Anden argumentværdi: $ 2'
smed ud 'Tredje argumentværdi: $ 3'

# Læsning af argumentværdier ved hjælp af loop
tilargvali '[e -mail beskyttet]'
gøre
smed ud -n '$ argval'
Færdig

# Tilføjelse af argumentværdier
sum= $(($ 1+$ 2+$ 3))

# udskriv resultatet
smed ud -Og ' nResultat af sum =$ sum'

Kør bash -filen med tre numeriske argumentværdier.



$bashcmdline1.shhalvtreds 35 femten





Eksempel -2: Tager filnavn som argument

Opret en bash -fil, og tilføj følgende kode for at tælle det samlede antal tegn i en fil. Her vil filnavn blive sendt som kommandolinjeargument.

#!/bin/bash
filnavn=$ 1
totalchar=``Toilet -c $ filnavn``
smed ud 'Samlet antal tegn er$ totalchar'

Kør bash -scriptet med filnavnet som en enkelt argumentværdi, og kør en anden kommando for at kontrollere det samlede antal tegn i den pågældende fil. Her bruges medarbejder.txt -fil som argumentværdi. Samlet antal tegn i medarbejder.txt -fil er 204.



$bashcmdline2.sh medarbejder.txt
$Toilet -cmedarbejder.txt

Brug af getopts -funktion:

Hvis du vil gemme data i en database eller en hvilken som helst fil eller oprette en rapport om et bestemt format baseret på kommandolinjeargumentværdier derefter getopts funktion er den bedste mulighed for at udføre opgaven. Det er en indbygget linux-funktion. Så du kan nemt bruge denne funktion i dit script til at læse formaterede data fra kommandolinjen.

Eksempel -1: Læsning af argumenter ved getopts -funktion

Opret en bash -fil, og tilføj følgende script for at forstå brugen af getopts fungere. 'Getopts' -funktion bruges med while loop til at læse kommandolinjens argumentmuligheder og argumentværdier. Her bruges 4 muligheder som er 'I', 'n', 'm' og 'Og' . case statement bruges til at matche den særlige mulighed og gemme argumentværdien i en variabel. Endelig udskrives værdierne for variablen.

#!/bin/bash
mens getopts ':i mig:'vred;gøre
sag $ arg i
jeg) ID=$ OPTARG;;
n) Navn=$ OPTARG;;
m) Fremstillingsdato=$ OPTARG;;
Og) Udløbsdato=$ OPTARG;;
esac
Færdig
smed ud -Og ' n$ ID $ Navn $ Fremstillingsdato $ Udløbsdato n'

Kør filen med følgende muligheder og argumentværdier. Her er p100 værdien af ​​-i option, 'Hot Cake' er værdien af ​​-n option, '01 -01-2018 'er værdien af ​​-m option og '06 -01-2018' er værdien af ​​- e mulighed.

$bashcmdline3.sh-jegp001-n 'Hot Cake' -m '01 -01-2018 ' -Og '06 -01-2018 '

Når du skal sende enkle værdier i et script, er det bedre at bruge argumentvariabler. Men hvis du vil sende data på en formateret måde, er det bedre at bruge getopts -funktion til at hente argumentværdier. For mere information se videoen !