Bash -kommandoutgang til variabelen

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

Kommandosubstitusjonssyntaks:

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

ELLER

variabel = 'kommando'
variabel = 'Kommando [alternativ…] Argument1 argumenter2…'
variabel = '/bane/til/kommando'

*** Merk: Ikke bruk noe plass før og etter det likeverdige tegn 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. Følgende to eksempler viser bruken av enkel kommandosubstitusjon.

Eksempel nr. 1:

bash 'Dato' Kommando brukes til å vise gjeldende dato og klokkeslett. Følgende skript vil lagre utdataene fra 'Dato' kommando til $dagens dato variabel ved å bruke kommandosubstitusjon.

$ current_date = $ (dato)
$ ekko "i dag er $ current_date"

Produksjon:

Eksempel 2:

'PWD' Kommandoen viser banen til den gjeldende arbeidskatalogen. Følgende skript lagrer utdataene fra 'PWD' kommando inn i variabelen, $ current_dir og verdien av denne variabelen skrives ut ved å bruke 'ekko' kommando.

$ current_dir = 'pwd'
$ ekko "Gjeldende katalog 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 output fra kommandoen med alternativ og argument til en variabel.

Eksempel nr. 3:

Bash 'toalett' Kommando brukes til å telle det totale antallet linjer, ord og tegn i en hvilken som helst fil. Denne kommandoen bruker -C, -W og -L som alternativ og filnavn som argument for å generere utgangen. Lag en tekstfil som heter frukt.tekst med følgende data for å teste neste skript.
frukt.tekst

Mango
oransje
Banan
Drue
Guava
eple

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

$ count_words = 'wc -w frukt.tekst'
$ ekko "Totalt ord i frukt.txt er $ count_words "

Produksjon:

Eksempel 4:

'kutte opp' er en annen bash -kommando som bruker alternativ og argument for å generere utgangen. Lag en tekstfil som heter ukedag.tekst med syv-ukers navn for å kjøre neste skript.

ukedag.tekst

mandag
tirsdag
onsdag
Torsdag
fredag
lørdag
søndag

Lag en bash -fil som heter CMDSUB1.sh med følgende skript. I dette skriptet, samtidig som Loop brukes til å lese innholdet i ukedag.tekst fillinje for linje og les de tre første karakterene på hver linje ved å bruke 'kutte opp' kommando. Etter kutting lagres strengverdien i variabelen $ dag. Deretter, hvis uttalelsen brukes til å sjekke verdien av $ dag er 'Sol' eller ikke. Utgangen vil skrive ut 'Søndag er ferien'Når hvis tilstanden er sann ellers, vil den skrive ut verdien av $ dag.

CMDSUB1.sh

#!/bin/bash
filnavn = 'ukedag.tekst'
mens du leser linjen; gjøre
dag = 'ekko $ linje | kutt -c 1-3 '
if [$ dag == "sol"]
deretter
Echo "Sunday is the Holiday"
ellers
ekko $ dag
fi
Ferdig<$filename

Kjør manuset.

$ katt ukedag.tekst
$ BASH CMDSUB1.sh

Produksjon:

Bruke kommandosubstitusjon i loop

Du kan lagre utgangen av kommandosubstitusjon i en hvilken som helst sløyfevariabel som vises i neste eksempel.

Eksempel 5:

Lag en fil som heter CMDSUB2.sh med følgende kode. Her, 'ls -d */'Kommando brukes til å hente all katalogliste fra gjeldende katalog. For Loop brukes her til å lese hver katalog fra utdataene og lagre den i variabelen $ dirname som skrives ut senere.

CMDSUB2.sh

#!/bin/bash
for dirname i $ (ls -d */)
gjøre
ekko "$ dirname"
Ferdig

Kjør manuset.

$ BASH CMDSUB2.sh

Produksjon:

Ved hjelp av nestede kommandoer

Hvordan du kan bruke flere kommandoer ved hjelp av Pipe (|) vises i forrige eksempel. Men du kan bruke nestede kommandoer i kommandosubstitusjon der utgangen fra den første kommandoen avhenger av utgangen fra den andre kommandoen og den fungerer motsatt av Pipe (|) -kommandoen.

Nestet kommandosyntax:

var = 'Command1 \' Command \ "

Eksempel 6:

To kommandoer, 'ekko'Og'WHO'brukes i dette eksemplet som nestede kommando. Her, 'WHOKommandoen vil først utføre som skriver ut brukerens informasjon om den for øyeblikket loggede brukeren. Utgangen fra 'WHO'Kommando vil utføre av'ekko'Kommando og utgangen av'ekko'vil lagre i variabelen $ var. Her, produksjonen av 'ekko'Kommando avhenger av utgangen fra'WHO'Kommando.

$ var = 'ekko \' hvem \ "
$ ekko $ var

Produksjon:

Bruke kommandosti

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

Eksempel 7:

'hvem er jeg' Kommandoen viser brukernavnet til den for øyeblikket loggede brukeren. Som standard lagres denne kommandoen i /usr/søppel/ mappe. Kjør følgende skript for å kjøre 'hvem er jeg' Kommando ved hjelp av sti og lagre i variabelen, $ utgang, og skriv ut verdien av $ utgang.

$ output = $ (/usr/bin/whoami)
$ Echo $ output

Produksjon:

Bruke kommandolinjeargument

Du kan bruke kommandolinje -argumentet med kommandoen som argumentet i kommandosubstitusjonen.

Eksempel nr. 8:

Lag en bash -fil som heter CMDSUB3.sh med følgende skript. 'basename'Kommando brukes her for å hente filnavnet fra 2nd Kommandolinjeargument og lagret i variabelen, $ filnavn. Vi kjenner 1st Kommandolinjeargumentet er navnet på det utførende skriptet som er betegnet med $ 0.

#!/bin/bash
filnavn = 'basename $ 1'
ekko "Navnet på filen er $ filnavn.""

Kjør skriptet med følgende argumentverdi.

$ BASH CMDSUB3.sh desktop/temp/hei.tekst

Her, basename av banen, Desktop/Temp/Hallo.tekst er 'Hallo.tekst'. Så verdien av $ filnavn vil være Hallo.tekst.

Produksjon:

Konklusjon:

Ulike bruksområder for kommandosubstitusjoner vises 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å utdataene.

Mer info i videoen: