Hur skickar jag argument i ett Bash -skript?

How Do I Pass Argument Bash Script



De flesta Linux Mint 20 -användare fastnar när de skickar ett argument i ett bash -skript. Du kan skicka argumenten till valfritt bash -skript när det körs. Det finns flera enkla och användbara sätt att skicka argument i ett bash -skript. I den här artikelguiden kommer vi att informera dig om några mycket enkla sätt att skicka och använda argument i dina bash -skript.

Skicka argument med standardvariabler:

Skapa en ny fil med valfritt namn med hjälp av pekskommandot, t.ex. file.sh.







$Rörfilnamn



Öppna den här nyskapade filen och lägg till lite bash -skript i den. Jag har lagt till några standardvariabler, t.ex. $ 1, $ 2 och $ 3 följaktligen. Vilka argument som än kommer att passeras genom terminalen kommer att lagras i de angivna variablerna.







Du måste köra den här filen med kommandot ./ följt av några argument. Som du kan se på bilden uppstår ett fel när jag passerade argumenten: Tillstånd nekat. Detta beror på att den här filen inte har körrättigheter.

$./filnamn argument1 argument2 argument

Så för att bevilja körningsrättigheterna för den här filen, använd kommandot sudo chmod för att göra det.



$sudo chmod+x filnamn

Kör nu filen igen med samma kommando ovan. Den här gången har jag framfört olika argument. Du kommer att se att de nyligen godkända argumenten lagras i standardvariablerna.

Skicka Shell -skriptnamn som argument:

Nu använder du samma gamla fil file.sh med en liten ändring av dess standardvariabler. Du måste lägga till variabeln $ 0 i skriptet enligt bilden.

När du kör samma ./ shell -skriptkommando kommer namnet på ditt skalskript, t.ex. ./filnamn lagras i $ 0 -variabeln som ett argument.

Överföra argument som en matris till variabel:

Från och med samma fil file.sh måste du lägga till några extra rader i det gamla skriptet. Deklarera en variabel med namnet array. Lägg till en standardvariabel [e -postskyddad] som lagrar de argument som användaren har angett som en array. Dessa argument kommer att analyseras till variabel array. Den sista raden visar alla argument för variabeln matris sorterade efter indexnummer.

Kör ./ shell -skriptet. Du kommer att se att det kommer att visa argumenten eller värdena som lagras som en array i [e -postskyddad] analyserat till variabel array men inte skalskriptnamnet i det andra eko -satsen. Du kommer att ha följande utdata.

$./filnamn argument1 argument2 argument

Använd samma fil med samma skript. Ta bara bort $ {array [3]} från den sista raden så tydligt som på bilden.

Efter att ha kört ./ -kommandot ser du en liknande utmatning som du fick i exemplet ovan utan ändring.

Du kan också få samma resultat genom att ersätta den sista raden i bash -skriptet med ett enda ord. Du behöver bara lägga till [e -postskyddad] i echo -satsen, och det kommer att visa argumenten som finns i denna variabel array.

Så om du kör ./ -kommandot igen får du samma resultat.

Kontrollera totalt antal godkända argument:

Tvärtom, om du vill veta det totala antalet argument som skickas av användaren kan du också göra det. För detta ändamål måste du bara ersätta [e -postskyddad] med $# i eko.

Återigen kör ./ -kommandot. Du kommer nu att se hela antalet argument som skickas till skriptet. I vårt fall skickas tre argument som värde.

Skapa rad för rad -utmatning av argument:

Skapa en ny fil test.sh i hemkatalogen. Lägg till bash -skriptet som visas.

Kör nu samma gamla kommando med olika argument. För det första ser du felet: Tillstånd nekat.

Du måste köra kommandot chmod för att ge den här filen sudo -privilegier. Kör sedan kommandot ./ shell igen. Och du kommer att få rad för rad sorterad utmatning av argument.

Begränsa variabeln via argumentindexnummer:

Om du vill begränsa variabeln med dess indexnummer kan du göra det mycket enkelt. Lägg till lockiga parenteser efter $ -tecknet och lägg till argumentindexnumret som du vill visa före andra argument.

Om argumenten från användarna är mindre än indexnumret i gränsvariabeln får du ett tomt argumentvärde. Som exempel har jag angett fyra argument, men jag har gett 05 -argumentvärdet som ska visas. I den här situationen visas variabeln tom eftersom det femte argumentet inte har passerat.

Men när du passerar lika många eller fler argument i kommandot får du värdet som visas i resultatet som visas.

Kontroll av specifika värderargument:

Skapa en ny fil med namnet Check.sh i din hemkatalog. Lägg till samma bash -skript som visas i bilden nedan. I det här skriptet har vi en variabel var för att lagra argumentvärdet som användaren har skickat. Sedan har vi en if -sats som kontrollerar om argumentvärdet matchas eller inte. Om argumentvärdet matchas med det värde som anges inom parentes, kommer det första ekosetet att köras. Om värdet inte stämmer utförs det andra ekosetet.

När vi kör kommandot shell script kommer det att ge ett fel. Genom att använda kommandot chmod kan vi korrigera detta fel.

Efter det kör du skalskriptet för den specifika filen med något argumentvärde. I vårt fall har vi angett Aqsa som ett argumentvärde, vilket är samma som värdet som visas inom parentes. Så bash -skriptet kommer att köra det första ekouttrycket som visas.

Å andra sidan, om du anger de olika argumentvärdena i skalskriptet, kommer det att visa den andra eko -satsen. Här har jag lagt till Rimsha som ett argumentvärde, vilket skiljer sig från värdet i if -satsen. Så bash script kommer att köra det andra ekouttyget.

Slutsats:

Jag hoppas att den här guiden har hjälpt dig tillräckligt för att ha ett starkt grepp om hur du skickar argument till standardvariabler, skickar argumentvärde som en array till en variabel, får det totala antalet argument passerade, rad för rad -utmatning av argument, begränsar argumentet utmatning med indexnummer, kontroll av specifikt värde -argument och många fler.