Hur man hanterar kommandoradsargument i ett basskript

How Handle Command Line Arguments Bash Script



I många fall kräver bash -skript argumentvärden för att tillhandahålla inmatningsalternativ till skriptet. Du kan hantera kommandoradsargument i ett bash -skript på två sätt. En är genom att använda argumentvariabler och en annan är med getopts fungera. Hur du kan hantera kommandoradsargument visas i den här självstudien.

Använda argumentvariabler:

Argumentvariabeln börjar från $ 0. Huvudskriptfilnamnet lagras i $ 0 som tar emot argumentvärden från kommandoradsargument. Om två argument skickas på kommandoraden kommer argumentvärdena att tas emot i $ 1 och $ 2 variabler i följd.







Exempel -1: Skicka tre numeriska värden som argument

Skapa en bash -fil och lägg till följande kod. Skriptet kommer att ta emot tre argumentvärden och lagras i $ 1, $ 2 och $ 3. Det räknar det totala antalet argument, skriver ut argumentvärden med loop och utan loop. Slutligen, skriv ut summan av alla argumentvärden.



#!/bin/bash

# Räknar totalt antal argument
kastade ut 'Totalt antal argument: $#'

# Läser argumentvärden individuellt
kastade ut 'Första argumentvärdet: $ 1'
kastade ut 'Andra argumentvärdet: $ 2'
kastade ut 'Tredje argumentvärde: $ 3'

# Läser argumentvärden med loop
förargvali '[e -postskyddad]'
do
kastade ut -n '$ argval'
Gjort

# Lägga till argumentvärden
belopp= $(($ 1+$ 2+$ 3))

# skriv ut resultatet
kastade ut -Och ' nResultat av summa =$ summa'

Kör bash -filen med tre numeriska argumentvärden.



$våldsamt slagcmdline1.shfemtio 35 femton





Exempel -2: Tar filnamn som argument

Skapa en bash -fil och lägg till följande kod för att räkna det totala antalet tecken i en fil. Här kommer filnamnet att skickas som kommandoradsargument.

#!/bin/bash
filnamn=$ 1
totalt=''toalett -c $ filnamn''
kastade ut 'Totalt antal tecken är$ totalt'

Kör bash -skriptet med filnamnet som enda argumentvärde och kör ett annat kommando för att kontrollera det totala antalet tecken i filen. Här används medarbetaren.txt -filen som argumentvärde. Totalt antal tecken i filen medarbetare.txt är 204.



$våldsamt slagcmdline2.sh anställd.txt
$toalett -cmedarbetare.txt

Använda getopts -funktionen:

Om du vill lagra data i databasen eller någon fil eller skapa en rapport om ett visst format baserat på kommandoradsargumentvärden då getopts funktion är det bästa alternativet för att utföra uppgiften. Det är en inbyggd linux-funktion. Så du kan enkelt använda den här funktionen i ditt skript för att läsa formaterad data från kommandoraden.

Exempel -1: Läsa argument av getopts -funktion

Skapa en bash -fil och lägg till följande skript för att förstå användningen av getopts fungera. 'Getopts' -funktionen används med while loop för att läsa kommandoradsargumentalternativ och argumentvärden. Här används 4 alternativ som är 'Jag', 'n', 'm' och 'Och' . case statement används för att matcha det specifika alternativet och lagra argumentvärdet i en variabel. Slutligen, skriv ut värdena för variabeln.

#!/bin/bash
medan getopts ':i mig:'arg;do
fall $arg i
i) ID=$ OPTARG;;
n) namn=$ OPTARG;;
m) Tillverkningsdatum=$ OPTARG;;
Och) Utgångsdatum=$ OPTARG;;
esac
Gjort
kastade ut -Och ' n$ ID $ Namn $ Tillverkningsdatum $ Utgångsdatum n'

Kör filen med följande alternativ och argumentvärden. Här är p100 värdet på -i alternativet, 'Hot Cake' är värdet på -n alternativet, '01 -01-2018 'är värdet på -m alternativet och '06 -01-2018' är värdet av - e alternativ.

$våldsamt slagcmdline3.sh-ip001-n 'Varm tårta' -m '01 -01-2018 ' -Och '06 -01-2018 '

När du behöver skicka enkla värden i ett skript är det bättre att använda argumentvariabler. Men om du vill skicka data på ett formaterat sätt är det bättre att använda getopts -funktionen för att hämta argumentvärden. För mer information titta videon !