BASH kommando output til variablen

Bash Command Output Variable



Forskellige typer bash -kommandoer skal køres fra terminalen baseret på brugerens krav. Når brugeren kører en kommando fra terminalen, viser den output, hvis der ikke findes nogen fejl, viser den fejlmeddelelsen. Nogle gange skal output fra kommandoen gemmes i en variabel til fremtidig brug. Shell kommando substitution funktion af bash kan bruges til dette formål. Hvordan du kan gemme forskellige typer shell -kommandoer i variablen ved hjælp af denne funktion, er vist i denne vejledning.

variabel= $(kommando)
variabel= $(kommando [mulighed…]argument1 argumenter2 ...)
variabel= $(/sti/til/kommando)

ELLER







variabel=``kommando``
variabel=``kommando [mulighed…]argument1 argumenter2 ...``
variabel=`/sti/til/kommando``

*** Bemærk: Brug ikke mellemrum før og efter lighedstegnet, når du bruger ovenstående kommandoer.



Enkelt kommandoutput til en variabel

Bash -kommandoer kan bruges uden nogen mulighed og argument for de kommandoer, hvor disse dele er valgfrie. De følgende to eksempler viser anvendelsen af ​​simpel kommandosubstitution.



Eksempel#1:

bash ` dato ' kommando bruges til at vise den aktuelle dato og klokkeslæt. Følgende script gemmer output fra ` dato ' kommando i $ nuværende dato variabel ved hjælp af kommandosubstitution.





$nuværende dato= $(dato)
$smed ud 'Idag er$ aktuelle_dato'

Produktion:



Eksempel#2:

`pwd` kommandoen viser stien til det aktuelle arbejdskatalog. Følgende script gemmer output fra `pwd` kommando i variablen, $ nuværende_dir og værdien af ​​denne variabel udskrives ved hjælp af `ekko` kommando.

$current_dir=``pwd``
$smed ud 'Det aktuelle bibliotek er:$ nuværende_dir'

Produktion:

Kommando med option og argument

Indstillingen og argumentet er obligatorisk for nogle bash -kommandoer. Følgende eksempler viser, hvordan du kan gemme output fra kommandoen med option og argument i en variabel.

Eksempel#3:

Bash ` Toilet kommando bruges til at tælle det samlede antal linjer, ord og tegn i enhver fil. Denne kommando bruger -c, -w og -l som option og filnavn som argument for at generere output. Opret en tekstfil med navnet frugter.txt med følgende data for at teste det næste script.
frugter.txt

frugter.txt
Mango
orange
Banan
Drue
Guava
Æble

Kør følgende kommandoer for at tælle og gemme det samlede antal ord i frugter.txt fil til en variabel, $ count_words og udskriv værdien ved hjælp af ` ekko ' kommando.

$count_words=``Toilet -ifrugter.txt``
$smed ud 'Samlede ord i fruits.txt er$ count_words'

Produktion:

Eksempel#4:

`klip` er en anden bash -kommando, der bruger option og argument til at generere output. Opret en tekstfil med navnet hverdag.txt med syv ugers navne til at køre det næste script.

hverdag.txt

Mandag
tirsdag
onsdag
torsdag
Fredag
lørdag
Søndag

Opret en bash -fil med navnet cmdsub1.sh med følgende script. I dette script, mens loop bruges til at læse indholdet af hverdag.txt fil linje for linje, og læs de tre første tegn i hver linje ved hjælp af ` klippe ' kommando. Efter skæring gemmes strengværdien i variablen $ dag . Dernæst Hvis sætningen bruges til at kontrollere værdien af $ dag er ' Sol' eller ikke. Outputtet udskrives ' Søndag er ferien 'Når hvis betingelsen er sand ellers vil den udskrive værdien af $ dag .

cmdsub1.sh

#!/bin/bash
filnavn='weekday.txt'
mens Læslinje;gøre
dag=``smed ud $ linje | skære -c 1-3``
hvis [ $ dag=='Sol' ]
derefter
smed ud 'Søndag er ferien'
andet
smed ud $ dag
være
Færdig<$ filnavn

Kør scriptet.

$kathverdag.txt
$bashcmdsub1.sh

Produktion:

Brug af kommandosubstitution i loop

Du kan gemme output fra kommandosubstitution i en hvilken som helst loopvariabel, der vises i det næste eksempel.

Eksempel#5:

Opret en fil med navnet cmdsub2.sh med følgende kode. Her, ` ls -d * / `kommando bruges til at hente alle biblioteklister fra det aktuelle bibliotek. For loop bruges her til at læse hver mappe fra output og gemme den i variablen $ dirname som udskrives senere.

cmdsub2.sh

#!/bin/bash
til dirnavn i$(ls -d * /)
gøre
smed ud '$ dirname'
Færdig

Kør scriptet.

$bashcmdsub2.sh

Produktion:

Brug af indlejrede kommandoer

Hvordan du kan bruge flere kommandoer ved hjælp af pipe (|) er vist i det foregående eksempel. Men du kan bruge indlejrede kommandoer i kommandosubstitution, hvor output fra den første kommando afhænger af output fra den anden kommando, og den fungerer modsat af rør (|) kommandoen.

Indlejret kommandosyntaks:

hvor=``kommando1 ``kommando``

Eksempel#6:

To kommandoer, ` smed ud `og` WHO `bruges i dette eksempel som den indlejrede kommando. Her, ` WHO `-kommandoen udfører først, der udskriver brugerens oplysninger om den aktuelt loggede bruger. Outputtet af ` WHO `kommandoen udføres med` smed ud `kommando og output af` smed ud `vil gemme sig i variablen $ var . Her er output af ` smed ud `kommando afhænger af output af` WHO `kommando.

$hvor=``smed ud``WHO``
$smed ud $ var

Produktion:

Brug af kommandosti

Hvis du kender kommandostien, kan du køre kommandoen ved at angive kommandostien, når du bruger kommandosubstitution. Følgende eksempel viser brugen af ​​kommandosti.

Eksempel#7:

`whoami` kommandoen viser brugernavnet til den aktuelt loggede bruger. Denne kommando er som standard gemt i / usr/ er/ folder. Kør følgende script for at køre ` whoami ' kommando ved hjælp af sti og gem i variablen, $ output, og udskriv værdien af $ output .

$produktion= $(/usr/er/hvem er jeg)
$smed ud $ output

Produktion:

Brug af kommandolinjeargument

Du kan bruge kommandolinjeargumentet med kommandoen som argumentet i kommandosubstitutionen.

Eksempel#8:

Opret en bash -fil med navnet cmdsub3.sh med følgende script. ` basenavn `kommando bruges her til at hente filnavnet fra 2ndkommandolinjeargument og gemt i variablen, $ filnavn . Vi kender 1stkommandolinjeargument er navnet på det eksekverende script, der er angivet med $ 0.

#!/bin/bash
filnavn=``basenavn $ 1``
smed ud 'Filens navn er$ filnavn. '

Kør scriptet med følgende argumentværdi.

$bashcmdsub3.sh Desktop/Midlertidig/hej.txt

Her, basisnavnet af stien, Desktop/temp/hello.txt er ' hej.txt ’. Så værdien af $ filnavn vil være hej.txt .

Produktion:

Konklusion:

Forskellige anvendelser af kommandosubstitutioner er vist i denne vejledning. Hvis du skal arbejde med flere kommandoer eller afhængige kommandoer og gemme resultatet midlertidigt for at udføre nogle andre opgaver senere, kan du bruge denne funktion i dit script til at få output.

Mere info i videoen: