BASH -kommandoutmatning till variabeln

Bash Command Output Variable



Olika typer av bash -kommandon måste köras från terminalen baserat på användarens krav. När användaren kör något kommando från terminalen visar det utmatningen om inget fel finns annars visar det felmeddelandet. Ibland måste utdata från kommandot lagras i en variabel för framtida bruk. Skalkommandosubstitutionsfunktionen för bash kan användas för detta ändamål. Hur du kan lagra olika typer av skalkommandon i variabeln med denna funktion visas i den här självstudien.

variabel= $(kommando)
variabel= $(kommando [alternativ…]argument1 argument2 ...)
variabel= $(/väg/till/kommando)

ELLER







variabel=''kommando''
variabel=''kommando [alternativ…]argument1 argument2 ...''
variabel=`/väg/till/kommando''

*** Obs! Använd inte mellanslag före och efter likhetstecknet när du använder kommandona ovan.



Enkelt kommandoutmatning till en variabel

Bash -kommandon kan användas utan något alternativ och argument för de kommandon där dessa delar är valfria. Följande två exempel visar användningen av enkel kommandosubstitution.



Exempel#1:

bash ` datum ' kommandot används för att visa aktuellt datum och tid. Följande skript lagrar utmatningen av ` datum ' kommando i $ dagens datum variabel genom att använda kommandosubstitution.





$dagens datum= $(datum)
$kastade ut 'Idag är$ current_date'

Produktion:



Exempel 2:

`pwd` kommandot visar sökvägen för den aktuella arbetskatalogen. Följande skript lagrar utdata från `pwd` kommando i variabeln, $ current_dir och värdet på denna variabel skrivs ut med hjälp av `eko` kommando.

$current_dir=''pwd''
$kastade ut 'Den aktuella katalogen är:$ current_dir'

Produktion:

Kommando med alternativ och argument

Alternativet och argumentet är obligatoriska för vissa bash -kommandon. Följande exempel visar hur du kan lagra kommandot med alternativ och argument i en variabel.

Exempel 3:

Bash ` toalett kommando används för att räkna det totala antalet rader, ord och tecken i en fil. Detta kommando använder -c, -w och -l som alternativ och filnamn som argument för att generera utdata. Skapa en textfil med namnet fruits.txt med följande data för att testa nästa skript.
fruits.txt

fruits.txt
Mango
Orange
Banan
Druva
Guava
Äpple

Kör följande kommandon för att räkna och lagra det totala antalet ord i fruits.txt fil till en variabel, $ count_words och skriv ut värdet med hjälp av ` eko` kommando.

$count_words=''toalett -ifruits.txt''
$kastade ut 'Totala ord i fruits.txt är$ count_words'

Produktion:

Exempel#4:

`klipp` är ett annat bash -kommando som använder alternativ och argument för att generera utdata. Skapa en textfil med namnet vardag.txt med sju veckodagars namn för att köra nästa skript.

vardag.txt

Måndag
Tisdag
Onsdag
Torsdag
fredag
Lördag
Söndag

Skapa en bash -fil med namnet cmdsub1.sh med följande skript. I detta manus, medan loop används för att läsa innehållet i vardag.txt fil rad för rad och läs de tre första tecknen på varje rad med hjälp av ` klippa ' kommando. Efter klippning lagras strängvärdet i variabeln $ dag . Om satsen används för att kontrollera värdet på $ dag är ' Sol' eller inte. Utmatningen skrivs ut ' Söndag är högtid 'När om villkoret är sant annars kommer det att skriva ut värdet av $ dag .

cmdsub1.sh

#!/bin/bash
filnamn='weekday.txt'
medan läsalinje;do
dag=''kastade ut $ rad | skära -c 1-3''
om [ $ dag=='Sol' ]
sedan
kastade ut 'Söndag är högtid'
annan
kastade ut $ dag
vara
Gjort<$ filnamn

Kör skriptet.

$kattvardag.txt
$våldsamt slagcmdsub1.sh

Produktion:

Använda kommandosubstitution i loop

Du kan lagra utmatningen av kommandosubstitution i valfri loopvariabel som visas i nästa exempel.

Exempel#5:

Skapa en fil med namnet cmdsub2.sh med följande kod. Här, ` ls -d * / `kommando används för att hämta all kataloglista från den aktuella katalogen. För loop används här för att läsa varje katalog från utdata och lagra den i variabeln $ dirname som skrivs ut senare.

cmdsub2.sh

#!/bin/bash
för dirname i$(ls -d * /)
do
kastade ut '$ dirname'
Gjort

Kör skriptet.

$våldsamt slagcmdsub2.sh

Produktion:

Använda kapslade kommandon

Hur du kan använda flera kommandon med hjälp av pipe (|) visas i föregående exempel. Men du kan använda kapslade kommandon vid kommandosubstitution där utmatningen från det första kommandot beror på utdata från det andra kommandot och det fungerar motsatt av rörkommandot (|).

Kapslad kommandosyntax:

var=''kommando1 ''kommando''

Exempel#6:

Två kommandon, ` kastade ut `och` WHO `används i det här exemplet som det kapslade kommandot. Här, ` WHO `-kommandot körs först som skriver ut användarens information om den inloggade användaren. Utmatningen av ` WHO `kommandot körs med` kastade ut `kommando och utmatningen av` kastade ut `lagras i variabeln $var . Här är utmatningen av ` kastade ut `kommandot beror på utmatningen av` WHO `kommando.

$var=''kastade ut''WHO''
$kastade ut $var

Produktion:

Använda kommandostig

Om du känner till kommandoens sökväg kan du köra kommandot genom att ange kommandostigen när du använder kommandosubstitution. Följande exempel visar användningen av kommandostig.

Exempel#7:

`whoami` kommandot visar användarnamnet för den för närvarande inloggade användaren. Som standard lagras detta kommando i / usr/ är/ mapp. Kör följande skript för att köra ` whoami ' kommando med sökväg och lagring i variabeln, $ produktion, och skriv ut värdet på $ produktion .

$produktion= $(/usr/am/vem är jag)
$kastade ut $ produktion

Produktion:

Använda kommandoradsargument

Du kan använda kommandoradsargumentet med kommandot som argument i kommandosubstitutionen.

Exempel#8:

Skapa en bash -fil med namnet cmdsub3.sh med följande skript. ` basnamn `kommandot används här för att hämta filnamnet från 2ndkommandoradsargument och lagrat i variabeln, $ filnamn . Vi vet 1stkommandoradsargument är namnet på det exekverande skriptet som betecknas med $ 0.

#!/bin/bash
filnamn=''basnamn $ 1''
kastade ut 'Filens namn är$ filnamn. '

Kör skriptet med följande argumentvärde.

$våldsamt slagcmdsub3.sh Skrivbord/temp/hej.txt

Här, basnamnet av vägen, Skrivbord/temp/hello.txt är ' hej.txt ’. Så, värdet av $ filnamn kommer vara hej.txt .

Produktion:

Slutsats:

Olika användningsområden för kommandoersättningar visas i denna handledning. Om du behöver arbeta med flera kommandon eller beroende kommandon och lagra resultatet tillfälligt för att utföra andra uppgifter senare kan du använda den här funktionen i ditt skript för att få utgången.

Mer info i videon: