Output del comando Bash alla variabile

Output del comando Bash alla variabile
Diversi tipi di comandi bash devono essere eseguiti dal terminale in base ai requisiti dell'utente. Quando l'utente esegue qualsiasi comando dal terminale, mostra l'output se non esiste alcun errore altrimenti mostra il messaggio di errore. A volte, l'output del comando deve essere archiviato in una variabile per un uso futuro. La caratteristica di sostituzione del comando shell di bash può essere utilizzata per questo scopo. Come puoi archiviare diversi tipi di comandi shell nella variabile utilizzando questa funzione è mostrato in questo tutorial.

Sintassi di sostituzione del comando:

variabile = $ (comando)
variabile = $ (comando [opzione ...] argomenta1 argomenti2…)
variabile = $ (/path/to/comando)

O

variabile = 'comando'
variabile = 'comando [opzione…] argomenta1 argomenti2…'
variabile = '/path/to/comando'

*** Nota: non usare spazio prima e dopo il segno uguale quando si utilizza i comandi sopra.

Output di comandi singolo su una variabile

I comandi bash possono essere utilizzati senza alcuna opzione e argomento per quei comandi in cui queste parti sono opzionali. I seguenti due esempi mostrano gli usi della semplice sostituzione del comando.

Esempio 1:

Bash 'data' Il comando viene utilizzato per mostrare la data e l'ora correnti. Il seguente script memorizzerà l'output di 'data' comando in $data odierna variabile usando la sostituzione del comando.

$ current_date = $ (data)
$ echo "Oggi è $ current_date"

Produzione:

Esempio n. 2:

'pwd' Il comando mostra il percorso della directory di lavoro corrente. Il seguente script memorizza l'output di 'pwd' comando nella variabile, $ current_dir e il valore di questa variabile viene stampato utilizzando 'eco' comando.

$ current_dir = 'pwd'
$ echo "La directory corrente è: $ current_dir"

Produzione:

Comando con opzione e argomento

L'opzione e l'argomento sono obbligatori per alcuni comandi bash. I seguenti esempi mostrano come è possibile archiviare l'output del comando con opzione e argomento in una variabile.

Esempio#3:

Bash 'wc' Il comando viene utilizzato per contare il numero totale di righe, parole e caratteri di qualsiasi file. Questo comando utilizza -c, -w e -l come opzione e nome file come argomento per generare l'output. Crea un file di testo denominato frutta.TXT Con i seguenti dati per testare lo script successivo.
frutta.TXT

Mango
Arancia
Banana
Uva
Guaiava
Mela

Eseguire i seguenti comandi per contare e archiviare il numero totale di parole in frutta.TXT file in una variabile, $ count_words e stampare il valore usando 'eco' comando.

$ count_words = 'wc -w frutti.TXT'
$ echo "parole totali in frutta.txt is $ count_words "

Produzione:

Esempio#4:

'taglio' è un altro comando bash che utilizza l'opzione e l'argomento per generare l'output. Crea un file di testo denominato giorni feriali.TXT con nomi di sette settimane per eseguire lo script successivo.

giorni feriali.TXT

Lunedi
Martedì
Mercoledì
Giovedì
Venerdì
Sabato
Domenica

Crea un file bash denominato cmdsub1.sh Con il seguente script. In questa sceneggiatura, Mentre Loop viene utilizzato per leggere il contenuto di giorni feriali.TXT File riga per riga e leggi i primi tre caratteri di ogni riga usando 'taglio' comando. Dopo il taglio, il valore della stringa viene archiviato nella variabile $ giorno. Successivamente, se l'istruzione viene utilizzata per verificare il valore di $ giorno È 'Sole' o no. L'output stamperà 'La domenica è la vacanza'Quando se la condizione è vera altrimenti stampa il valore di $ giorno.

cmdsub1.sh

#!/Bin/Bash
nome file = 'giorno feriale.TXT'
mentre la riga di lettura; Fare
day = 'echo $ line | Cut -c 1-3 '
if [$ day == "Sun"]
Poi
Echo "La domenica è la vacanza"
altro
Echo $ day
fi
Fatto<$filename

Esegui lo script.

$ gatto nei giorni feriali.TXT
$ bash cmdsub1.sh

Produzione:

Usando la sostituzione del comando in loop

È possibile archiviare l'output di sostituzione del comando in qualsiasi variabile loop che è mostrata nel prossimo esempio.

Esempio#5:

Crea un file denominato cmdsub2.sh con il seguente codice. Qui, 'ls -d */'Il comando viene utilizzato per recuperare l'elenco delle directory dalla directory corrente. Per loop viene utilizzato qui per leggere ogni directory dall'output e memorizzarla nella variabile $ dirname che viene stampato in seguito.

cmdsub2.sh

#!/Bin/Bash
per dirname in $ (ls -d */)
Fare
Echo "$ dirname"
Fatto

Esegui lo script.

$ bash cmdsub2.sh

Produzione:

Usando comandi nidificati

Come è possibile utilizzare più comandi usando pipe (|) è mostrato nell'esempio precedente. Ma è possibile utilizzare comandi nidificati nella sostituzione del comando in cui l'output del primo comando dipende dall'output del secondo comando e funziona di fronte al comando pipe (|).

Sintassi del comando nidificato:

var = 'comando1 \' comando \ "

Esempio#6:

Due comandi, "eco' E 'Chi'sono usati in questo esempio come comando nidificato. Qui, 'Chi'Il comando eseguirà prima che stampano le informazioni dell'utente sull'utente attualmente accessibile. L'output del 'Chi"Il comando eseguirà da"eco"Comando e l'output di"eco'memorizzerà nella variabile $ var. Qui, l'output di 'eco"Il comando dipende dall'output di"Chi'Comando.

$ var = 'echo \' Who \ "
$ echo $ var

Produzione:

Usando il percorso di comando

Se conosci il percorso del comando, è possibile eseguire il comando specificando il percorso di comando quando si utilizza la sostituzione del comando. Il seguente esempio mostra l'uso del percorso di comando.

Esempio#7:

'chi sono' Il comando mostra il nome utente dell'utente attualmente loggato. Per impostazione predefinita, questo comando è archiviato in /usr/bidone/ cartella. Esegui il seguente script da eseguire 'chi sono' comando usando il percorso e memorizza nella variabile, $ output, e stampare il valore di $ output.

$ output = $ (/usr/bin/whoami)
$ echo $ output

Produzione:

Usando l'argomento della riga di comando

È possibile utilizzare l'argomento della riga di comando con il comando come argomento nella sostituzione del comando.

Esempio#8:

Crea un file bash denominato cmdsub3.sh Con il seguente script. 'basename'Il comando viene utilizzato qui per recuperare il nome file dal 2nd Argomento della riga di comando e archiviato nella variabile, $ nome file. Conosciamo il 1st L'argomento della riga di comando è il nome dello script di esecuzione che è indicato da $ 0.

#!/Bin/Bash
FileName = 'Basename $ 1'
echo "Il nome del file è $ nome file."

Esegui lo script con il seguente valore dell'argomento.

$ bash cmdsub3.SH desktop/temp/ciao.TXT

Qui, il basename del percorso, Desktop/temp/ciao.TXT È 'Ciao.TXT'. Quindi, il valore del $ nome file sarà Ciao.TXT.

Produzione:

Conclusione:

Vari usi delle sostituzioni di comando sono mostrati in questo tutorial. Se è necessario lavorare con più comandi o comandi dipendenti e archiviare il risultato temporaneo per eseguire alcune altre attività in seguito, è possibile utilizzare questa funzione nel tuo script per ottenere l'output.

Maggiori informazioni nel video: