Come salvare l'output del comando come variabile in Bash? Intelligenza dei dati PlatoBlockchain. Ricerca verticale. Ai.

Come salvare l'output del comando come variabile in Bash?

Introduzione

Negli script bash, l'assegnazione dell'output di un comando alle variabili può essere conveniente memorizzando gli output dei comandi e utilizzandoli successivamente.

In questa breve guida, daremo un'occhiata a come memorizzare l'output di un comando come variabile in Bash.

Le basi per impostare le variabili

Il salvataggio dell'output di un comando come variabile si ottiene tramite sostituzione di comando. La sostituzione del comando è un wrapper che esegue il comando in a ambiente subshelle sostituisce il comando avvolto con l'output standard dell'ambiente in cui è stato eseguito il comando. Questa uscita può quindi essere referenziata in seguito, se collegata a una variabile di riferimento!

La sostituzione dei comandi può essere ottenuta tramite apici inversi o il simbolo del dollaro con parentesi:

`command`

$(command)

Si discute se `comando` (backtick) o $(comando) (simbolo del dollaro e parentesi) dovrebbe essere utilizzato come "best practice". $(command) funziona bene nell'annidamento e in alcuni casi migliora la leggibilità, ma puoi utilizzare entrambe le sintassi negli esempi precedenti.

Detto questo, assegnare l'output di un comando a una variabile in Bash è facile come:

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

corsa ${variable} è noto come espansione dei parametri, e viene utilizzato per valutare e recuperare il valore associato a una variabile di riferimento.

Diamo ora un'occhiata al semplice esempio di impostazione di una variabile per un comando per modificare il colore di output:

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

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

echo "${GREEN}Paris"

Nello snippet, abbiamo utilizzato il tput comando e assegnato il valore restituito di quei comandi per stampare testo colorato. Il setaf cambia il colore di primo piano e 3 (verde) e 9 (arancione) sono codici colore.

Ora passeremo a un altro esempio che contiene più condizioni per impostare variabili per diversi comandi:

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

Nello script sopra, il whoami comando restituisce il nome utente dell'utente corrente. Il uname -a restituisce le informazioni di sistema e il file date restituisce l'ora e la data correnti.

Nota: Possiamo concatenare l'assegnazione di variabili aggiungendo più comandi in una singola chiamata nidificata. Il CREATE La variabile contiene l'output di touch comando, che a sua volta crea un file e imposta il nome file sull'output di date +"%d%m%Y comando.

Dai un'occhiata alla nostra guida pratica e pratica per l'apprendimento di Git, con le migliori pratiche, gli standard accettati dal settore e il cheat sheet incluso. Smetti di cercare su Google i comandi Git e in realtà imparare esso!

Infine, aggiungiamo a multiline concetto di assegnazione della variabile di comando aggiungendo una barra rovesciata () tra l' ls command -l flag per visualizzare solo i file di testo utilizzando *.txt. La barra rovesciata è un carattere di escape che informa la shell di non interpretare il carattere successivo.

Nel echo comando, abbiamo aggiunto il -e flag per utilizzare il carattere speciale, ad es. n (nuova riga), per stampare l'output nella nuova riga.

Otteniamo il seguente risultato dopo aver eseguito lo script:

$ ./variable.sh

Conclusione

In questa breve guida, abbiamo dato un'occhiata a come impostare l'output di un comando su una variabile in Bash. Abbiamo dato un'occhiata alla differenza tra le sintassi per sostituzione di comando, rilevando i miglioramenti della leggibilità di $(command) sulla sostituzione basata sul backtick. Quindi, abbiamo dato un'occhiata a diversi esempi sia di assegnazione semplice che di assegnazione di output concatenata/nidificata.

Timestamp:

Di più da Impilamento