BASH kommandoutgang til variabelen

Bash Command Output Variable



Ulike typer bash -kommandoer må kjøres fra terminalen basert på brukerens krav. Når brukeren kjører en kommando fra terminalen, viser den utgangen hvis det ikke finnes noen feil, ellers viser den feilmeldingen. Noen ganger må utdataene fra kommandoen lagres i en variabel for fremtidig bruk. Shell kommandosubstitusjonsfunksjon for bash kan brukes til dette formålet. Hvordan du kan lagre forskjellige typer skallkommandoer i variabelen ved hjelp av denne funksjonen, er vist i denne opplæringen.

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

ELLER







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

*** Merk: Ikke bruk mellomrom før og etter likhetstegnet når du bruker kommandoene ovenfor.



Enkelt kommandoutgang til en variabel

Bash -kommandoer kan brukes uten noe alternativ og argument for de kommandoene der disse delene er valgfrie. De følgende to eksemplene viser bruken av enkel kommandosubstitusjon.



Eksempel#1:

bash ` dato ' kommandoen brukes til å vise gjeldende dato og klokkeslett. Følgende skript lagrer utdataene for ` dato ' kommando til $ dagens dato variabel ved å bruke kommandosubstitusjon.





$dagens dato= $(Dato)
$kastet ut 'Idag er$ current_date'

Produksjon:



Eksempel 2:

`pwd` kommandoen viser banen til den nåværende arbeidskatalogen. Følgende skript lagrer utdataene fra `pwd` kommando i variabelen, $ current_dir og verdien av denne variabelen skrives ut ved hjelp av `ekko` kommando.

$current_dir=``pwd``
$kastet ut 'Den nåværende katalogen er:$ current_dir'

Produksjon:

Kommando med alternativ og argument

Alternativet og argumentet er obligatorisk for noen bash -kommandoer. Følgende eksempler viser hvordan du kan lagre utdataene fra kommandoen med alternativ og argument i en variabel.

Eksempel 3:

Bash ` toalett kommandoen brukes til å telle det totale antallet linjer, ord og tegn i en fil. Denne kommandoen bruker -c, -w og -l som alternativ og filnavn som argument for å generere utdata. Lag en tekstfil med navnet fruits.txt med følgende data for å teste det neste skriptet.
fruits.txt

fruits.txt
Mango
oransje
Banan
Drue
Guava
eple

Kjør følgende kommandoer for å telle og lagre det totale antallet ord i fruits.txt fil til en variabel, $ count_words og skriv ut verdien ved å bruke ` ekko ' kommando.

$count_words=``toalett -ifruits.txt``
$kastet ut 'Totale ord i fruits.txt er$ count_words'

Produksjon:

Eksempel#4:

`kutt` er en annen bash -kommando som bruker alternativ og argument for å generere utdata. Lag en tekstfil med navnet ukedag.txt med syv ukers navn for å kjøre det neste skriptet.

ukedag.txt

mandag
tirsdag
onsdag
Torsdag
fredag
lørdag
søndag

Lag en bash -fil med navnet cmdsub1.sh med følgende skript. I dette manuset, samtidig som loop brukes til å lese innholdet i ukedag.txt fil linje for linje og les de tre første tegnene på hver linje ved å bruke ` kutt` kommando. Etter kutting lagres strengverdien i variabelen $ dag . Deretter, hvis setningen brukes til å kontrollere verdien av $ dag er ' Sol' eller ikke. Utskriften skrives ut ‘ Søndag er høytid 'Når hvis betingelsen er sann ellers vil den skrive ut verdien av $ dag .

cmdsub1.sh

#!/bin/bash
filnavn='weekday.txt'
samtidig som leselinje;gjøre
dag=``kastet ut $ linje | skjære -c 1-3``
hvis [ $ dag=='Sol' ]
deretter
kastet ut 'Søndag er høytid'
ellers
kastet ut $ dag
være
gjort<$ filnavn

Kjør skriptet.

$kattukedag.txt
$bashcmdsub1.sh

Produksjon:

Bruke kommandosubstitusjon i loop

Du kan lagre utdataene fra kommandosubstitusjon i en sløyfevariabel som vises i neste eksempel.

Eksempel#5:

Lag en fil med navnet cmdsub2.sh med følgende kode. Her, ` ls -d * / `-kommandoen brukes til å hente all katalogliste fra gjeldende katalog. For loop brukes her for å lese hver katalog fra utgangen og lagre den i variabelen $ dirname som skrives ut senere.

cmdsub2.sh

#!/bin/bash
til dirname i$(ls -d * /)
gjøre
kastet ut '$ dirname'
gjort

Kjør skriptet.

$bashcmdsub2.sh

Produksjon:

Bruke nestede kommandoer

Hvordan du kan bruke flere kommandoer ved hjelp av pipe (|) er vist i forrige eksempel. Men du kan bruke nestede kommandoer i kommandosubstitusjon der utdataene fra den første kommandoen avhenger av utgangen til den andre kommandoen og den fungerer motsatt av rør (|) kommandoen.

Nestet kommandosyntaks:

hvor=``kommando1 ``kommando``

Eksempel#6:

To kommandoer, ` kastet ut `og` WHO `brukes i dette eksemplet som den nestede kommandoen. Her, ` WHO `-kommandoen utfører først den som skriver ut brukerens informasjon om den påloggede brukeren. Utgangen av ` WHO `kommandoen vil utføres av` kastet ut `kommando og utgangen av` kastet ut `vil lagre seg i variabelen $ var . Her er utgangen av ` kastet ut `kommandoen avhenger av utgangen av` WHO `kommando.

$hvor=``kastet ut``WHO``
$kastet ut $ var

Produksjon:

Bruke kommandobanen

Hvis du kjenner banen til kommandoen, kan du kjøre kommandoen ved å spesifisere kommandobanen når du bruker kommandosubstitusjon. Følgende eksempel viser bruken av kommandobanen.

Eksempel#7:

`whoami` kommandoen viser brukernavnet til den påloggede brukeren. Denne kommandoen er som standard lagret i / usr/ er/ mappe. Kjør følgende skript for å kjøre ` whoami` kommando ved å bruke sti og lagre i variabelen, $ produksjon, og skriv ut verdien av $ produksjon .

$produksjon= $(/usr/er/hvem er jeg)
$kastet ut $ produksjon

Produksjon:

Bruke kommandolinjeargument

Du kan bruke kommandolinjeargumentet med kommandoen som argumentet i kommandosubstitusjonen.

Eksempel#8:

Lag en bash -fil med navnet cmdsub3.sh med følgende skript. ` basenavn `-kommandoen brukes her for å hente filnavnet fra 2ndkommandolinjeargument og lagret i variabelen, $ filnavn . Vi kjenner 1stkommandolinjeargument er navnet på det utførende skriptet som er angitt med $ 0.

#!/bin/bash
filnavn=``basenavn $ 1``
kastet ut 'Navnet på filen er$ filnavn. '

Kjør skriptet med følgende argumentverdi.

$bashcmdsub3.sh Desktop/temp/hei.txt

Her, grunnnavnet av stien, Desktop/temp/hello.txt er ' hei.txt '. Så verdien av $ filnavn vil være hei.txt .

Produksjon:

Konklusjon:

Ulike bruksområder for kommandosubstitusjoner er vist i denne opplæringen. Hvis du trenger å jobbe med flere kommandoer eller avhengige kommandoer og lagre resultatet midlertidig for å gjøre noen andre oppgaver senere, kan du bruke denne funksjonen i skriptet ditt for å få utgangen.

Mer info i videoen: