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
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
mandagLag 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:
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: