Cum se salvează ieșirea comenzii ca variabilă în Bash? PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Cum se salvează ieșirea comenzii ca variabilă în Bash?

Introducere

În scripturile bash, atribuirea ieșirii unei comenzi variabilelor poate fi convenabilă prin stocarea ieșirilor comenzilor și utilizarea lor mai târziu.

În acest scurt ghid, vom arunca o privire asupra modului în care puteți stoca rezultatul unei comenzi ca variabilă în Bash.

Elementele de bază pentru configurarea variabilelor

Salvarea ieșirii unei comenzi ca variabilă se realizează prin înlocuirea comenzii. Substituția comenzii este un wrapper care execută comanda în a mediu subshell, și înlocuiește comanda wrapped cu ieșirea standard a mediului în care a fost executată comanda. Această ieșire poate fi apoi referită mai târziu, dacă este conectată la o variabilă de referință!

Înlocuirea comenzilor poate fi realizată prin backtick-uri sau semnul dolarului cu paranteze:

`command`

$(command)

Există o dezbatere dacă `comanda` (backticks) sau $(comanda) (semnul dolarului și parantezele) ar trebui să fie folosite ca „cea mai bună practică”. $(command) funcționează bine în imbricare și îmbunătățește lizibilitatea în unele cazuri, dar puteți folosi oricare dintre sintaxa în exemplele următoare.

Acestea fiind spuse – alocarea ieșirii unei comenzi unei variabile în Bash este la fel de simplă ca:

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

Alergare ${variable} este cunoscut ca extinderea parametrilor, și este folosit pentru a evalua și a prelua valoarea asociată unei variabile de referință.

Să aruncăm o privire acum la exemplul simplu de configurare a unei variabile pentru o comandă pentru a schimba culoarea de ieșire:

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

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

echo "${GREEN}Paris"

În fragment, am folosit tput comanda și a atribuit valoarea returnată a acelor comenzi pentru a imprima text colorat. The setaf schimbă culoarea primului plan, iar 3 (verde) și 9 (portocaliu) sunt coduri de culoare.

Acum vom trece la un alt exemplu care conține mai multe condiții pentru a configura variabile pentru diferite comenzi:

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

În scenariul de mai sus, whoami comanda returnează numele de utilizator al utilizatorului curent. The uname -a returnează informațiile de sistem și date returnează ora și data curente.

Notă: Putem înlănțui alocarea variabilelor adăugând mai multe comenzi într-un singur apel imbricat. The CREATE variabila conține rezultatul touch comanda, care, la rândul său, creează un fișier și setează numele fișierului la ieșirea fișierului date +"%d%m%Y comanda.

Consultați ghidul nostru practic și practic pentru a învăța Git, cu cele mai bune practici, standarde acceptate de industrie și fisa de cheat incluse. Opriți căutarea pe Google a comenzilor Git și de fapt învăţa aceasta!

În cele din urmă, adăugăm a multiline conceptul de alocare a variabilei de comandă prin adăugarea unei bare oblice inverse () între ls comandă -l flag pentru a afișa numai fișierele text folosind *.txt. Backslash este un caracter de escape care informează shell-ul să nu interpreteze următorul caracter.

În echo comanda, am adăugat -e flag pentru a utiliza caracterul special, adică n (linie nouă), pentru a imprima rezultatul în noua linie.

Obținem următorul rezultat după executarea scriptului:

$ ./variable.sh

Concluzie

În acest scurt ghid, am aruncat o privire asupra modului în care puteți seta ieșirea unei comenzi la o variabilă în Bash. Ne-am uitat la diferența dintre sintaxele pentru înlocuirea comenzii, observând îmbunătățirile de lizibilitate ale $(command) peste înlocuirea bazată pe backtick. Apoi, am aruncat o privire la câteva exemple atât de atribuire simplă, cât și de atribuire de ieșire înlănțuită/imbricată.

Timestamp-ul:

Mai mult de la Stackabuse