Sortida de l'ordre BASH a la variable

Bash Command Output Variable



Cal que s’executin diferents tipus d’ordres bash des del terminal en funció dels requisits de l’usuari. Quan l'usuari executa qualsevol ordre des del terminal, mostra la sortida si no existeix cap error, en cas contrari, mostra el missatge d'error. De vegades, la sortida de l'ordre s'ha d'emmagatzemar en una variable per a un ús futur. La funció de substitució d'ordres Shell de bash es pot utilitzar per a aquest propòsit. En aquest tutorial es mostra com podeu emmagatzemar diferents tipus d’ordres de shell a la variable mitjançant aquesta funció.

variable= $(comandament)
variable= $(comandament [opció ...]argument1 arguments2 ...)
variable= $(/Camí/a/comandament)

O







variable=`comandament`
variable=`comandament [opció ...]argument1 arguments2 ...`
variable=`/Camí/a/comandament`

*** Nota: no utilitzeu cap espai abans ni després del signe igual quan feu servir les ordres anteriors.



Sortida d'una única ordre a una variable

Les ordres Bash es poden utilitzar sense cap opció ni argument per a aquelles ordres en què aquestes parts siguin opcionals. Els dos exemples següents mostren els usos de la substitució simple d'ordres.



Exemple 1:

bash ` data` s'utilitza l'ordre per mostrar la data i l'hora actuals. El següent script emmagatzemarà la sortida de data` ordre a $ data corrent variable mitjançant la substitució d'ordres.





$data corrent= $(data)
$trobo 'Avui és$ data_actual'

Sortida:



Exemple 2:

`pwd` L'ordre mostra el camí del directori de treball actual. El següent script emmagatzema la sortida de `pwd` ordre a la variable, $ dir_actual i el valor d'aquesta variable s'imprimeix mitjançant `echo` comandament.

$dir_actual=`pwd`
$trobo 'El directori actual és:$ dir_actual'

Sortida:

Ordre amb opció i argument

L'opció i l'argument són obligatoris per a algunes ordres bash. Els exemples següents mostren com podeu emmagatzemar la sortida de l'ordre amb l'opció i l'argument en una variable.

Exemple 3:

Bash ` wc La comanda s'utilitza per comptar el nombre total de línies, paraules i caràcters de qualsevol fitxer. Aquesta ordre utilitza -c, -w i -l com a opció i nom de fitxer com a argument per generar la sortida. Creeu un fitxer de text anomenat fruits.txt amb les dades següents per provar el següent script.
fruits.txt

fruits.txt
Mango
taronja
Plàtan
Raïm
Guaiaba
poma

Executeu les ordres següents per comptar i emmagatzemar el nombre total de paraules al fitxer fruits.txt fitxer en una variable, $ count_words i imprimiu el valor utilitzant ` echo` comandament.

$count_words=`wc -enfruits.txt`
$trobo 'El total de paraules a fruits.txt és$ count_words'

Sortida:

Exemple # 4:

'tallar' és una altra ordre bash que utilitza l'opció i l'argument per generar la sortida. Creeu un fitxer de text anomenat dayday.txt amb noms de set dies laborables per executar el següent script.

dayday.txt

Dilluns
Dimarts
Dimecres
Dijous
Divendres
Dissabte
Diumenge

Creeu un fitxer bash anomenat cmdsub1.sh amb el següent guió. En aquest guió, mentre loop s'utilitza per llegir el contingut de dayday.txt fitxer línia per línia i llegiu els tres primers caràcters de cada línia utilitzant ` tallar` comandament. Després de tallar, el valor de la cadena s’emmagatzema a la variable $ dia . A continuació, si s'utilitza la sentència per comprovar el valor de $ dia és ' Sol ” o no. La sortida imprimirà ‘ Diumenge és el dia festiu 'Quan si la condició és certa en cas contrari, s'imprimirà el valor de $ dia .

cmdsub1.sh

#! / bin / bash
nom de l'arxiu='weekday.txt'
mentre llegirlínia;fer
dia=`trobo $ línia | tallar -c 1-3`
si [ $ dia=='Sol' ]
llavors
trobo 'El diumenge és la festa'
en cas contrari
trobo $ dia
ser
fet<$ nom de fitxer

Executeu l'script.

$gatdayday.txt
$bashcmdsub1.sh

Sortida:

Utilització de la substitució d’ordres en bucle

Podeu emmagatzemar la sortida de la substitució d'ordres a qualsevol variable de bucle que es mostra a l'exemple següent.

Exemple 5:

Creeu un fitxer anomenat cmdsub2.sh amb el següent codi. Aquí ' ls -d */ L'ordre `s'utilitza per recuperar tota la llista de directoris del directori actual. For loop s'utilitza aquí per llegir cada directori de la sortida i emmagatzemar-lo a la variable $ dirname que s’imprimeix més tard.

cmdsub2.sh

#! / bin / bash
per nom de dir dins$(ls -d * /)
fer
trobo '$ dirname'
fet

Executeu l'script.

$bashcmdsub2.sh

Sortida:

Utilitzant ordres imbricades

A l'exemple anterior es mostra com podeu utilitzar diverses ordres mitjançant pipe (|). Però podeu utilitzar ordres imbricades en substitució d'ordres, on la sortida de la primera ordre depèn de la sortida de la segona ordre i funciona a l'oposat de l'ordre pipe (|).

Sintaxi d'ordres imbricades:

on=`ordre1 `comandament``

Exemple núm. 6:

Dues ordres, ` trobo `i` Qui `s'utilitzen en aquest exemple com a ordre imbricada. Aquí ' Qui primer s'executarà l'ordre que imprimeix la informació de l'usuari de l'usuari que ha iniciat la sessió. La sortida del fitxer ` Qui 'l'ordre s'executarà per' trobo 'ordre i la sortida de trobo `emmagatzemarà a la variable $ var . Aquí, la sortida de trobo 'l'ordre depèn de la sortida de' Qui `comando.

$on=`trobo`Qui``
$trobo $ var

Sortida:

Utilitzant el camí d’ordres

Si coneixeu el camí de l'ordre, podeu executar-lo especificant el camí de l'ordre quan utilitzeu la substitució de l'ordre. L'exemple següent mostra l'ús del camí d'ordres.

Exemple # 7:

'whoami' L'ordre mostra el nom d'usuari de l'usuari que té la sessió iniciada. Per defecte, aquesta ordre s'emmagatzema a / usr / sóc / carpeta. Executeu el següent script per executar ` whoami` ordre utilitzant path i store a la variable, $ sortida, i imprimeix el valor de $ sortida .

$sortida= $(/usr/sóc/Qui sóc)
$trobo $ sortida

Sortida:

Utilitzant l'argument de línia d'ordres

Podeu utilitzar l'argument de línia d'ordres amb l'ordre com a argument en la substitució de l'ordre.

Exemple 8:

Creeu un fitxer bash anomenat cmdsub3.sh amb el següent guió. ' nom de base Aquí s'utilitza l'ordre `per recuperar el nom del fitxer del fitxer 2ndargument de línia d'ordres i emmagatzemat a la variable, $ nom de fitxer . Coneixem l’1cL'argument de línia d'ordres és el nom de l'script d'execució que es denota amb $ 0.

#! / bin / bash
nom de l'arxiu=`nom de base $ 1`
trobo 'El nom del fitxer és$ nom de fitxer. '

Executeu l'script amb el següent valor d'argument.

$bashcmdsub3.sh Desktop/temp/hola.txt

Aquí, el nom de la base del camí, Desktop / temp / hello.txt és ' hola.txt ’. Per tant, el valor del fitxer $ nom de fitxer serà hola.txt .

Sortida:

Conclusió:

En aquest tutorial es mostren diversos usos de les substitucions d'ordres. Si heu de treballar amb diverses ordres o ordres dependents i emmagatzemar el resultat temporalment per fer algunes altres tasques més endavant, podeu utilitzar aquesta funció al vostre script per obtenir la sortida.

Més informació al vídeo: