Hoe opdrachtuitvoer als variabele opslaan in Bash? PlatoBlockchain-gegevensintelligentie. Verticaal zoeken. Ai.

Hoe de opdrachtuitvoer als variabele in Bash op te slaan?

Introductie

In bash-scripts kan het handig zijn om de uitvoer van een commando aan variabelen toe te wijzen door de uitvoer van de commando's op te slaan en deze later te gebruiken.

In deze korte handleiding bekijken we hoe u de uitvoer van een commando als een variabele in Bash kunt opslaan.

De basisprincipes voor het instellen van variabelen

Het opslaan van de uitvoer van een commando als een variabele wordt bereikt door commando vervanging. Commandovervanging is een wrapper die de opdracht uitvoert in a subshell-omgeving, en vervangt de ingepakte opdracht door de standaarduitvoer van de omgeving waarin de opdracht werd uitgevoerd. Er kan later naar deze uitgang worden verwezen, indien aangesloten op een referentievariabele!

Commandovervanging kan worden bereikt via backticks of het dollarteken tussen haakjes:

`command`

$(command)

Er is discussie over de vraag of `commando` (terugtekens) of $(opdracht) (dollarteken en haakjes) moet als โ€œbeste praktijkโ€ worden gebruikt. $(command) werkt goed bij het nesten en verbetert in sommige gevallen de leesbaarheid, maar in de volgende voorbeelden kunt u beide syntaxis gebruiken.

Dat gezegd hebbende: het toewijzen van de uitvoer van een commando aan een variabele in Bash is net zo eenvoudig als:

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

Hardlopen ${variable} heet parameteruitbreiding, en wordt gebruikt om de waarde die aan een referentievariabele is gekoppeld, te evalueren en op te halen.

Laten we nu eens kijken naar het eenvoudige voorbeeld van het instellen van een variabele voor een opdracht om de uitvoerkleur te wijzigen:

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

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

echo "${GREEN}Paris"

In het fragment hebben we de tput opdracht en heeft de geretourneerde waarde van die opdrachten toegewezen om kleurrijke tekst af te drukken. De setaf verandert de voorgrondkleur, en 3 (groen) en 9 (oranje) zijn kleurcodes.

Nu gaan we verder met een ander voorbeeld dat meerdere voorwaarden bevat om variabelen in te stellen voor verschillende opdrachten:

#!/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}"

In het bovenstaande script is de whoami commando retourneert de gebruikersnaam van de huidige gebruiker. De uname -a retourneert de systeeminformatie, en de date retourneert de huidige tijd en datum.

Opmerking: We kunnen de toewijzing van variabelen aan elkaar koppelen door meerdere opdrachten toe te voegen in รฉรฉn enkele geneste aanroep. De CREATE variabele bevat de uitvoer van de touch commando, dat op zijn beurt een bestand aanmaakt en de bestandsnaam instelt op de uitvoer van het date +"%d%m%Y opdracht.

Bekijk onze praktische, praktische gids voor het leren van Git, met best-practices, door de industrie geaccepteerde normen en bijgevoegd spiekbriefje. Stop met Googlen op Git-commando's en eigenlijk leren het!

Tenslotte voegen wij A toe multiline opdrachtvariabele toewijzingsconcept door een backslash toe te voegen () tussen de ls commando -l flag om alleen tekstbestanden weer te geven met behulp van *.txt. De backslash is een escape-teken dat de shell informeert om het volgende teken niet te interpreteren.

In het echo opdracht, hebben we de -e vlag om het speciale teken te gebruiken, dat wil zeggen: n (nieuwe regel), om de uitvoer op de nieuwe regel af te drukken.

We krijgen het volgende resultaat na het uitvoeren van het script:

$ ./variable.sh

Conclusie

In deze korte handleiding hebben we bekeken hoe je de uitvoer van een commando in Bash naar een variabele kunt instellen. We hebben gekeken naar het verschil tussen de syntaxis voor commando vervanging, wijzend op de verbeteringen in de leesbaarheid van $(command) over op backtick gebaseerde vervanging. Vervolgens hebben we verschillende voorbeelden bekeken van zowel eenvoudige toewijzing als gekoppelde/geneste uitvoertoewijzing.

Tijdstempel:

Meer van Stapelmisbruik