Shell Scripting – Sustitución de comandos

Un shell es una interfaz que ayuda a los usuarios a conectarse con el sistema. Usar un shell es equivalente a comunicarse indirectamente con el sistema operativo. En los sistemas distribuidos Linux, cada vez que usamos la terminal, nos conectamos con un shell. El trabajo de un shell es analizar los comandos de Unix o las instrucciones dadas por el usuario. Este proceso involucra tomar comandos del usuario y convertirlos en una forma que el kernel pueda entender fácilmente. En palabras simples, actúa como un medio entre el usuario y el kernel del sistema operativo. El núcleo es la parte más crucial del sistema operativo de una computadora.

Para comprender la sustitución de comandos, analicemos primero la sustitución en los scripts de shell. La sustitución es una funcionalidad mediante la cual podemos indicarle al shell que sustituya el valor real de una expresión.

Ejemplo:

En el siguiente programa, primero creamos la variable num y le asignamos el valor 20 y luego sustituimos el valor de num por 100 en el comando echo.

#!/bin/sh

num=100

echo -e "num: $num"

Producción:

Este artículo se centra en la técnica de sustitución de comandos que se utiliza en las secuencias de comandos de shell.

Hay algunas secuencias de caracteres que no representan su verdadera naturaleza pero tienen un significado especial para el sistema operativo y estas secuencias se conocen como secuencias de escape. Cuando se usan en un comando, se reemplazan por valores reales.

Secuencias de escape Significado
\r retorno de carro
\t pestaña horizontal
\b retroceso
 \\ barra invertida
 \norte  \norte

Sustitución de comandos:

La sustitución de comandos es un mecanismo que siguen los programadores en un script de shell. En este mecanismo, la salida de un comando reemplaza al comando mismo. Shell opera la expansión ejecutando un comando y luego reemplazando la sustitución del comando con la salida estándar del comando. En palabras simples, la salida de un comando UNIX se empaqueta y luego se usa como un comando.

Para entenderlo mejor, consideremos un ejemplo. El comando seq en Linux se usa para imprimir números de INICIO a FIN en pasos de INCREMENTO.

Sintaxis:

seq START INCREMENT END  

Tipo de devolución:

Imprime números de INICIO a FIN cada uno en la nueva línea por la diferencia de INCREMENTO.

Ejemplo:

En el siguiente script, estamos imprimiendo números del 2 al 40 con una diferencia de 2. En otras palabras, estamos imprimiendo números pares hasta el 40.

#!/bin/sh

# your code goes here

seq 2 2 40

Producción:

Podemos usar la salida del comando anterior como un nuevo comando. Considere la siguiente secuencia de comandos,  

Ejemplo:

#!/bin/sh
# your code goes here
 
echo $(seq 2 2 40)

Producción:

Ampliación de variables y comandos:

Durante el proceso de sustitución de comandos, la salida del comando se puede asignar a una variable, como cualquier otro valor.

Ejemplo:

En el siguiente script, hemos asignado el resultado del comando echo a ambas strings en las variables, «variable1» y «variable2», respectivamente. Luego hemos usado estas variables en el comando echo.

#!/bin/sh

variable1=$(echo 'Full form of gfg is' )

variable2=$(echo 'GeekforGeeks')

echo "$variable1 : $variable2"

Producción:

Pérdida de líneas nuevas en la sustitución de comandos:

En el mecanismo de sustitución de comandos, si la salida de un comando que se está sustituyendo contiene saltos de línea finales, en ese caso los saltos de línea finales se eliminan después de la sustitución. Tenga en cuenta que las nuevas líneas incrustadas no se eliminan, pero pueden eliminarse durante la división de palabras.

Ejemplo:

En este script, estamos usando el comando seq. Ahora el comando seq imprime números en la consola y agrega un carácter de nueva línea después de que cada número se imprime en la consola.

#!/bin/sh

# your code goes here

seq 1 2 19

Producción:

Ejemplo:

En este script, hemos usado el resultado del comando anterior y lo hemos sustituido en el comando. Como puede ver en la salida, los números del 1 al 39 con la diferencia de 2 se imprimen en la consola. Pero esta vez todos están impresos en la misma línea sin ningún carácter de nueva línea.  

#!/bin/sh

# your code goes here

echo $(seq 1 2 39)

Producción:

Publicación traducida automáticamente

Artículo escrito por bhuwanesh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *