Hvordan håndtere kommandolinjeargumenter i et Bash -skript

How Handle Command Line Arguments Bash Script



I mange tilfeller krever bash -skript argumentverdier for å gi inndatamuligheter til manuset. Du kan håndtere kommandolinjeargumenter i et bash -skript på to måter. Den ene er ved å bruke argumentvariabler og en annen er ved å bruke getopts funksjon. Hvordan du kan håndtere kommandolinjeargumenter vises i denne opplæringen.

Bruke argumentvariabler:

Argumentvariabelen starter fra $ 0. Navnet på hovedskriptfilen er lagret i $ 0 som mottar argumentverdier fra kommandolinjeargumenter. Hvis to argumenter sendes på kommandolinjen, blir argumentverdiene mottatt i $ 1 og $ 2 variabler i rekkefølge.







Eksempel -1: Sender tre numeriske verdier som argumenter

Lag en bash -fil og legg til følgende kode. Skriptet vil motta tre argumentverdier og lagre i $ 1, $ 2 og $ 3. Det vil telle det totale antallet argumenter, skrive ut argumentverdier med sløyfe og uten løkke. Til slutt skriver du ut summen av alle argumentverdier.



#!/bin/bash

# Teller totalt antall argumenter
kastet ut 'Totalt antall argumenter: $#'

# Lese argumentverdier individuelt
kastet ut 'Første argumentverdi: $ 1'
kastet ut 'Andre argumentverdi: $ 2'
kastet ut 'Tredje argumentverdi: $ 3'

# Lese argumentverdier ved hjelp av loop
tilargvali '[e -postbeskyttet]'
gjøre
kastet ut -n '$ argval'
gjort

# Legge til argumentverdier
sum= $(($ 1+$ 2+$ 3))

# skrive ut resultatet
kastet ut -Og ' nResultat av sum =$ sum'

Kjør bash -filen med tre numeriske argumentverdier.



$bashcmdline1.shfemti 35 femten





Eksempel -2: Tar filnavn som argument

Lag en bash -fil og legg til følgende kode for å telle det totale antallet tegn i en fil. Her vil filnavn bli sendt som kommandolinjeargument.

#!/bin/bash
filnavn=$ 1
totalchar=``toalett -c $ filnavn``
kastet ut 'Totalt antall tegn er$ totalt'

Kjør bash -skriptet med filnavnet som enkel argumentverdi, og kjør en annen kommando for å kontrollere det totale antallet tegn i den filen. Her brukes medarbeider.txt -fil som argumentverdi. Totalt antall tegn i medarbeider.txt -filen er 204.



$bashcmdline2.sh ansatt.txt
$toalett -cansatt.txt

Bruke getopts -funksjonen:

Hvis du vil lagre data i en database eller en fil eller lage en rapport om et bestemt format basert på kommandolinjeargumentverdier getopts funksjon er det beste alternativet for å utføre oppgaven. Det er en innebygd linux-funksjon. Så du kan enkelt bruke denne funksjonen i skriptet til å lese formaterte data fra kommandolinjen.

Eksempel -1: Lese argumenter av getopts -funksjon

Lag en bash -fil og legg til følgende script for å forstå bruken av getopts funksjon. 'Getopts' -funksjonen brukes med mens loop for å lese kommandolinjeargumentalternativer og argumentverdier. Her brukes 4 alternativer som er 'Jeg', 'n', 'm' og 'Og' . case statement brukes til å matche det bestemte alternativet og lagre argumentverdien i en variabel. Til slutt skriver du ut verdiene til variabelen.

#!/bin/bash
samtidig som getopts ':i meg:'sint;gjøre
sak $ arg i
Jeg) ID=$ OPTARG;;
n) Navn=$ OPTARG;;
m) Produksjonsdato=$ OPTARG;;
Og) Utløpsdato=$ OPTARG;;
esac
gjort
kastet ut -Og ' n$ ID $ Navn $ Produksjonsdato $ Utløpsdato n'

Kjør filen med følgende alternativer og argumentverdier. Her er p100 verdien av -i alternativet, 'Hot Cake' er verdien av -n alternativet, '01 -01-2018 'er verdien av -m alternativet og '06 -01-2018' er verdien av - e alternativet.

$bashcmdline3.sh-Jegp001-n 'Varm kake' -m '01 -01-2018 ' -Og '06 -01-2018 '

Når du trenger å sende enkle verdier i et skript, er det bedre å bruke argumentvariabler. Men hvis du vil sende data på en formatert måte, er det bedre å bruke getopts -funksjonen for å hente argumentverdier. For mer informasjon se videoen !