BASH-opdrachtuitvoer naar de variabele

Bash Command Output Variable



Verschillende soorten bash-opdrachten moeten vanaf de terminal worden uitgevoerd op basis van de vereisten van de gebruiker. Wanneer de gebruiker een opdracht vanaf de terminal uitvoert, wordt de uitvoer weergegeven als er geen fout is, anders wordt de foutmelding weergegeven. Soms moet de uitvoer van de opdracht worden opgeslagen in een variabele voor toekomstig gebruik. Voor dit doel kan de Shell-opdrachtvervangingsfunctie van bash worden gebruikt. Hoe u met deze functie verschillende soorten shell-opdrachten in de variabele kunt opslaan, wordt in deze zelfstudie getoond.

variabele= $(opdracht)
variabele= $(opdracht [optie…]argument1 argumenten2 ...)
variabele= $(/pad/tot/opdracht)

OF







variabele=``opdracht``
variabele=``opdracht [optie…]argument1 argumenten2 ...``
variabele=`/pad/tot/opdracht``

***Opmerking: gebruik geen spatie voor en na het gelijkteken bij het gebruik van de bovenstaande opdrachten.



Uitvoer van één commando naar een variabele

Bash-commando's kunnen zonder enige optie en argument worden gebruikt voor die commando's waar deze onderdelen optioneel zijn. De volgende twee voorbeelden tonen het gebruik van eenvoudige opdrachtvervanging.



Voorbeeld 1:

bash ` datum` commando wordt gebruikt om de huidige datum en tijd weer te geven. Het volgende script zal de uitvoer van ` . opslaan datum` commando in $ huidige datum variabele met behulp van opdrachtvervanging.





$huidige datum= $(datum)
$gooide uit 'Vandaag is$current_date'

Uitgang:



Voorbeeld #2:

`pwd` commando toont het pad van de huidige werkmap. Het volgende script slaat de uitvoer op van `pwd` commando in de variabele, $ huidige_dir en de waarde van deze variabele wordt afgedrukt met behulp van `echo` opdracht.

$huidige_dir=``pwd``
$gooide uit 'De huidige map is:$ huidige_dir'

Uitgang:

Commando met optie en argument

De optie en het argument zijn verplicht voor sommige bash-commando's. De volgende voorbeelden laten zien hoe u de uitvoer van de opdracht met optie en argument in een variabele kunt opslaan.

Voorbeeld #3:

bash ` wc commando wordt gebruikt om het totale aantal regels, woorden en tekens van een bestand te tellen. Deze opdracht gebruikt -c, -w en -l als optie en bestandsnaam als argument om de uitvoer te genereren. Maak een tekstbestand met de naam fruit.txt met de volgende gegevens om het volgende script te testen.
fruit.txt

fruit.txt
Mango
Oranje
Banaan
Druif
Guave
appel

Voer de volgende opdrachten uit om het totale aantal woorden in de . te tellen en op te slaan fruit.txt bestand in een variabele, $count_words en druk de waarde af met ` echo` opdracht.

$count_words=``wc -infruit.txt``
$gooide uit 'Totaal aantal woorden in fruits.txt is$count_words'

Uitgang:

Voorbeeld #4:

`knippen` is een ander bash-commando dat optie en argument gebruikt om de uitvoer te genereren. Maak een tekstbestand met de naam weekdag.txt met namen van zeven werkdagen om het volgende script uit te voeren.

weekdag.txt

maandag
Dinsdag
woensdag
donderdag
vrijdag
zaterdag
zondag

Maak een bash-bestand met de naam cmdsub1.sh met het volgende script. In dit schrift, terwijl lus wordt gebruikt om de inhoud van te lezen weekdag.txt bestand regel voor regel en lees de eerste drie tekens van elke regel met behulp van ` knippen` opdracht. Na het knippen wordt de tekenreekswaarde opgeslagen in de variabele $dag . Vervolgens, als de instructie wordt gebruikt om de waarde van . te controleren $dag is ' Zon' of niet. De uitvoer zal afdrukken ' Zondag is de feestdag ' wanneer als de voorwaarde waar is, anders wordt de waarde van afgedrukt $dag .

cmdsub1.sh

#!/bin/bash
bestandsnaam='weekdag.txt'
terwijl lezenlijn;doen
dag=``gooide uit $lijn | snee -C 1-3``
indien [ $dag=='Zon' ]
dan
gooide uit 'Zondag is het feest'
anders
gooide uit $dag
zijn
gedaan<$bestandsnaam

Voer het script uit.

$katweekdag.txt
$bashcmdsub1.sh

Uitgang:

Opdrachtvervanging in lus gebruiken

U kunt de uitvoer van opdrachtvervanging opslaan in elke lusvariabele die in het volgende voorbeeld wordt getoond.

Voorbeeld #5:

Maak een bestand met de naam cmdsub2.sh met de volgende code. Hier, ` ls -d * / ` commando wordt gebruikt om alle directorylijsten uit de huidige directory op te halen. For-lus wordt hier gebruikt om elke map uit de uitvoer te lezen en op te slaan in de variabele $naam die later wordt afgedrukt.

cmdsub2.sh

#!/bin/bash
voor dirname in$(ls -NS * /)
doen
gooide uit '$naam'
gedaan

Voer het script uit.

$bashcmdsub2.sh

Uitgang:

Geneste opdrachten gebruiken

Hoe u meerdere commando's kunt gebruiken met pipe(|) wordt getoond in het vorige voorbeeld. Maar u kunt geneste opdrachten gebruiken bij opdrachtvervanging waarbij de uitvoer van de eerste opdracht afhangt van de uitvoer van de tweede opdracht en het werkt tegengesteld aan de opdracht pipe(|).

Geneste opdrachtsyntaxis:

waar=``commando1 ``opdracht``

Voorbeeld#6:

Twee commando's, ` gooide uit ` en ` WHO ` worden in dit voorbeeld gebruikt als het geneste commando. Hier, ` WHO ` commando zal eerst worden uitgevoerd die de gebruikersinformatie van de momenteel ingelogde gebruiker afdrukt. De uitvoer van de ` WHO ` commando wordt uitgevoerd door ` gooide uit ` commando en de uitvoer van ` gooide uit ` wordt opgeslagen in de variabele $ var . Hier is de uitvoer van ` gooide uit ` commando hangt af van de output van ` WHO ` commando.

$waar=``gooide uit``WHO``
$gooide uit $ var

Uitgang:

Opdrachtpad gebruiken

Als u het pad van de opdracht kent, kunt u de opdracht uitvoeren door het opdrachtpad op te geven wanneer u opdrachtvervanging gebruikt. Het volgende voorbeeld toont het gebruik van het opdrachtpad.

Voorbeeld#7:

`whoami` commando toont de gebruikersnaam van de momenteel ingelogde gebruiker. Standaard wordt deze opdracht opgeslagen in / usr/ ben/ map. Voer het volgende script uit om ` . uit te voeren whoami' commando met behulp van pad en opslaan in de variabele, $uitvoer, en print de waarde van $output .

$uitvoer= $(/usr/ben/wie ben ik)
$gooide uit $output

Uitgang:

Opdrachtregelargument gebruiken

U kunt het opdrachtregelargument met de opdracht gebruiken als het argument in de opdrachtvervanging.

Voorbeeld#8:

Maak een bash-bestand met de naam cmdsub3.sh met het volgende script. ` basisnaam ` commando wordt hier gebruikt om de bestandsnaam op te halen uit de 2ndopdrachtregelargument en opgeslagen in de variabele, $bestandsnaam . We kennen de 1NSopdrachtregelargument is de naam van het uitvoerende script dat wordt aangeduid met $0.

#!/bin/bash
bestandsnaam=``basisnaam $ 1``
gooide uit 'De naam van het bestand is$bestandsnaam'

Voer het script uit met de volgende argumentwaarde.

$bashcmdsub3.sh Desktop/temp/hallo.txt

Hier, de basisnaam van het pad, Desktop/temp/hallo.txt is ' hallo.txt ’. Dus de waarde van de $bestandsnaam zal zijn hallo.txt .

Uitgang:

Conclusie:

In deze zelfstudie worden verschillende toepassingen van opdrachtvervangingen getoond. Als u met meerdere opdrachten of afhankelijke opdrachten moet werken en het resultaat tijdelijk moet opslaan om later andere taken uit te voeren, kunt u deze functie in uw script gebruiken om de uitvoer te krijgen.

Meer info in de video: