Hoe geef ik een argument door in een bash-script?

How Do I Pass Argument Bash Script



De meeste Linux Mint 20-gebruikers lopen vast bij het doorgeven van een argument in een bash-script. U kunt de argumenten doorgeven aan elk bash-script wanneer het wordt uitgevoerd. Er zijn verschillende eenvoudige en handige manieren om argumenten in een bash-script door te geven. In deze artikelgids laten we u enkele zeer eenvoudige manieren weten om argumenten door te geven en te gebruiken in uw bash-scripts.

Argumenten doorgeven met behulp van standaardvariabelen:

Maak een nieuw bestand met een willekeurige naam met behulp van de aanraakopdracht, bijvoorbeeld file.sh.







$aanrakenbestandsnaam



Open dit nieuw gemaakte bestand en voeg er een bash-script aan toe. Ik heb enkele standaardvariabelen toegevoegd, b.v. $ 1, $ 2 en $ 3 bijgevolg. Alle argumenten die via de terminal worden doorgegeven, worden opgeslagen in de vermelde variabelen.







U moet dit bestand uitvoeren met de opdracht ./ gevolgd door enkele argumenten. Zoals je op de afbeelding kunt zien, treedt er een fout op wanneer ik de argumenten heb doorgegeven: Toestemming geweigerd. Dit komt omdat dit bestand geen uitvoeringsrechten heeft.

$./bestandsnaam argument1 argument2 argument

Dus om de uitvoeringsrechten voor dit bestand te verlenen, gebruik je de opdracht sudo chmod om dit te doen.



$sudo chmod+x bestandsnaam

Voer het bestand nu opnieuw uit met dezelfde bovenstaande opdracht. Deze keer heb ik verschillende argumenten gegeven. U zult zien dat de nieuw doorgegeven argumenten worden opgeslagen in de standaardvariabelen.

Shell-scriptnaam doorgeven als argument:

Gebruik nu hetzelfde oude bestand file.sh met een kleine wijziging in de standaardvariabelen. U moet de variabele $0 in het script toevoegen, zoals weergegeven.

Als u hetzelfde ./ shell-scriptcommando uitvoert, wordt de naam van uw shellscript, b.v. ./bestandsnaam wordt als argument in de variabele $0 opgeslagen.

Argumenten doorgeven als array naar variabele:

Beginnend met hetzelfde bestand file.sh, moet je wat extra regels in het oude script toevoegen. Declareer een variabele met de naam array. Voeg een standaardvariabele toe [email protected] die de door de gebruiker ingevoerde argumenten als een array opslaat. Deze argumenten worden geparseerd naar een variabele array. Op de laatste regel worden alle argumenten van de variabele array weergegeven, gesorteerd op indexnummer.

Voer het ./ shell-script uit. U zult zien dat het de argumenten of waarden weergeeft die zijn opgeslagen als een array in [email protected] geparseerd naar de variabele array, maar niet de shellscriptnaam in de tweede echo-instructie. U krijgt de volgende uitvoer.

$./bestandsnaam argument1 argument2 argument

Gebruik hetzelfde bestand met hetzelfde script. Verwijder gewoon de ${array[3]} van de laatste regel zoals duidelijk op de afbeelding.

Na het uitvoeren van de opdracht ./, ziet u een vergelijkbare uitvoer als in het bovenstaande voorbeeld zonder wijziging.

U kunt hetzelfde resultaat krijgen door de laatste regel van het bash-script te vervangen door één enkel woord. Je hoeft alleen maar [email protected] toe te voegen aan de echo-instructie, en het zal de argumenten weergeven die aanwezig zijn in deze variabele array.

Dus als u de opdracht ./ opnieuw uitvoert, krijgt u dezelfde resultaten.

Controleer het totale aantal argumenten dat is doorgegeven:

Integendeel, als u het totale aantal argumenten wilt weten dat door de gebruiker is doorgegeven, kunt u dat ook doen. Hiervoor hoeft u alleen [email protected] te vervangen door $# in echo.

Voer opnieuw het ./-commando uit. U ziet nu het volledige aantal argumenten dat aan het script is doorgegeven. In ons geval worden 3 argumenten als waarde doorgegeven.

Maak regel voor regel uitvoer van argumenten:

Maak een nieuw bestand test.sh aan in de homedirectory. Voeg het bash-script toe zoals weergegeven.

Voer nu hetzelfde oude commando uit met verschillende argumenten. Ten eerste ziet u de fout: Toestemming geweigerd.

U moet de opdracht chmod uitvoeren om dit bestand sudo-rechten te verlenen. Voer daarna de ./ shell-scriptopdracht opnieuw uit. En u krijgt de regel voor regel gesorteerde uitvoer van argumenten.

Beperk de variabele via argumentindexnummer:

Als u de variabele wilt beperken met behulp van het indexnummer, kunt u dat heel eenvoudig doen. Voeg accolades toe na het $-teken en voeg het argumentindexnummer toe dat u vóór andere argumenten wilt weergeven.

Als de argumenten van de gebruikers kleiner zijn dan het indexnummer dat is opgegeven in de limietvariabele, krijgt u een lege argumentwaarde. Als voorbeeld heb ik 4 argumenten gegeven, maar ik heb de 05 argumentwaarde gegeven die moet worden weergegeven. In deze situatie wordt de variabele leeg weergegeven omdat het vijfde argument niet is doorgegeven.

Maar wanneer u het gelijke of meer aantal argumenten in de opdracht doorgeeft, krijgt u de waarde weergegeven in het resultaat zoals weergegeven.

Specifieke waardeargumenten controleren:

Maak een nieuw bestand met de naam Check.sh in je homedirectory. Voeg hetzelfde bash-script toe als in de onderstaande afbeelding. In dit script hebben we een variabele var om de argumentwaarde op te slaan die door de gebruiker is doorgegeven. Dan hebben we een if-statement, dat controleert of de argumentwaarde overeenkomt of niet. Als de argumentwaarde overeenkomt met de waarde tussen haakjes, wordt de eerste echo-opdracht uitgevoerd. Als de waarde niet overeenkomt, wordt de tweede echo-opdracht uitgevoerd.

Wanneer we het shellscript-commando uitvoeren, zal het een foutmelding geven. Door de opdracht chmod te gebruiken, kunnen we deze fout corrigeren.

Voer daarna het shellscript uit voor het specifieke bestand met een argumentwaarde. In ons geval hebben we Aqsa als argumentwaarde gegeven, die hetzelfde is als de waarde die tussen haakjes wordt weergegeven. Dus het bash-script zal de eerste echo-instructie uitvoeren zoals weergegeven.

Aan de andere kant, als u de verschillende argumentwaarden in het shellscript opgeeft, zal het de andere echo-instructie weergeven. Hier heb ik Rimsha als argumentwaarde toegevoegd, die verschilt van de waarde in de if-instructie. Dus het bash-script zal de tweede echo-instructie uitvoeren.

Conclusie:

Ik hoop dat deze gids je voldoende heeft geholpen om een ​​sterke grip te hebben op het doorgeven van argumenten aan standaardvariabelen, het doorgeven van de argumentwaarde als een array aan een variabele, het totale aantal doorgegeven argumenten krijgen, regel voor regel uitvoer van argumenten, het argument beperken uitvoer met behulp van indexnummer, het controleren van een specifiek waardeargument en nog veel meer.