Hvordan lagre kommandoutgang som variabel i Bash? PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Hvordan lagre kommandoutgang som variabel i Bash?

Introduksjon

I bash-skript kan det være praktisk å tilordne utdataene fra en kommando til variabler ved å lagre utdataene til kommandoene og bruke dem senere.

I denne korte guiden skal vi se på hvordan du kan lagre utdataene fra en kommando som en variabel i Bash.

Grunnleggende for å sette opp variabler

Lagring av utdata fra en kommando som en variabel oppnås gjennom kommandosubstitusjon. Kommandoerstatning er en innpakning som utfører kommandoen i en subshell miljø, og erstatter den innpakkede kommandoen med standardutgangen til miljøet der kommandoen ble kjørt. Denne utgangen kan deretter refereres senere, hvis den er koblet til en referansevariabel!

Kommandoerstatning kan oppnås gjennom backticks eller dollartegnet med parentes:

`command`

$(command)

Det er diskusjon om `kommando` (backticks) eller $(kommando) (dollartegn og parentes) bør brukes som "beste praksis". $(command) fungerer bra i nesting, og forbedrer lesbarheten i noen tilfeller, men du kan gå med begge syntaksene i eksemplene videre.

Når det er sagt - å tilordne utdata fra en kommando til en variabel i Bash er så enkelt som:

VARIABLE=$(command)
echo "${VARIABLE}"

kjører ${variable} er kjent som parameterutvidelse, og brukes til å evaluere og hente verdien knyttet til en referansevariabel.

La oss nå ta en titt på det enkle eksemplet på å sette opp en variabel for en kommando for å endre utdatafargen:

#!/bin/bash
GREEN=$(tput setaf 2)
echo "${GREEN}Please"

ORANGE=$(tput setaf 9)
echo "${ORANGE}Visit"

echo "${GREEN}Paris"

I utdraget har vi brukt tput kommandoen og tildelte den returnerte verdien av disse kommandoene for å skrive ut fargerik tekst. De setaf endrer forgrunnsfargen, og 3 (grønn) og 9 (oransje) er fargekoder.

Nå går vi videre til et annet eksempel som inneholder flere betingelser for å sette opp variabler for forskjellige kommandoer:

#!/bin/bash
PERSON=$(whoami)
echo -e "Hey ${PERSON}! I am Charlien"

DETAILS=$(uname -a)
echo -e "You're running this script on:n${DETAILS}n"

DATES=$(date)
echo -e "The script is being run on:n${DATES}n"

CREATE=$(touch $(date +"%d%m%Y").txt)
echo -e "A text file logging this run is created.${CREATE}n"

LOCATION=$(ls 
  -l *txt)
echo -e "Saved text file at: ${LOCATION}"

I manuset ovenfor er det whoami kommandoen returnerer gjeldende brukers brukernavn. De uname -a returnerer systeminformasjonen, og date returnerer gjeldende klokkeslett og dato.

OBS: Vi kan kjede variabeltilordning ved å legge til flere kommandoer i et enkelt nestet kall. De CREATE variabelen inneholder utgangen av touch kommando, som igjen oppretter en fil og setter filnavnet til utdataene til date +"%d%m%Y kommando.

Sjekk ut vår praktiske, praktiske guide for å lære Git, med beste praksis, bransjeaksepterte standarder og inkludert jukseark. Slutt å google Git-kommandoer og faktisk lære den!

Til slutt legger vi til en multiline kommandovariabeltilordningskonsept ved å legge til en omvendt skråstrek () mellom ls kommando -l flagg for å vise kun tekstfiler ved hjelp av *.txt. Omvendt skråstrek er et rømningstegn som informerer skallet om ikke å tolke neste tegn.

echo kommandoen la vi til -e flagg for å bruke spesialtegnet, dvs. n (ny linje), for å skrive ut utskriften på den nye linjen.

Vi får følgende resultat etter å ha kjørt skriptet:

$ ./variable.sh

konklusjonen

I denne korte veiledningen har vi tatt en titt på hvordan du kan sette utdata fra en kommando til en variabel i Bash. Vi har tatt en titt på forskjellen mellom syntaksene for kommandosubstitusjon, og merker lesbarhetsforbedringene til $(command) over backtick-basert substitusjon. Deretter har vi tatt en titt på flere eksempler på både enkel tildeling og kjedet/nestet utdatatilordning.

Tidstempel:

Mer fra Stackabuse