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 una 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 variables, 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.
Sustitución de secuencias de escape:
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 |
---|---|
\norte | añadir una nueva línea |
\t | pestaña horizontal |
\\ | barra invertida |
\b | retroceso |
\r | retorno de carro |
Ejemplo:
En este script, usamos dos comandos de eco para imprimir strings. Como puede ver, hemos usado una secuencia de escape para la nueva línea (\n) al final de la string. Dado que el trabajo real de este personaje es agregar una nueva línea, se agrega una nueva línea (claramente visible en la salida). Además, en la segunda declaración, hemos utilizado tres tabuladores horizontales al principio. Dado que el trabajo real de este personaje es agregar un espacio de tabulación horizontal, se agregan tres espacios horizontales antes de imprimir la string en la consola (claramente visible en la salida).
#!/bin/sh #statement 1 echo -e "GeeksforGeeks\n" # statement 2 echo -e "\t\tis the best"
Producción:
Sustitución de variables:
Un shell nos permite manipular el valor de una variable en función de su estado de inicialización. Por estado de inicialización nos referimos a si una variable se inicializa antes de que su valor se use realmente para diferentes propósitos.
No Señor. | Expresión | Significado |
---|---|---|
1 | ${miVariable} | sustituya el valor de myVariable . |
2 | ${miVariable:-valor} | Si myVariable no está configurado (o es nulo), el valor se sustituye por myVariable . |
3 | ${miVariable:=valor} | Si myVariable no está configurado (o es nulo), entonces se establece en valor. |
4 | ${miVariable:+valor} | Si myVariable está configurado, el valor se sustituye por myVariable . |
5 | ${miVariable:? mensaje} | Si myVariable no está configurado (o es nulo), el mensaje se imprime como un error estándar. |
El funcionamiento de estas expresiones se ha discutido en detalle en el siguiente script:
Ejemplo:
#!/bin/sh # If myVariable is unset or null then # assign 100 to it echo ${myVariable:- 100} echo "1. The value of myVariable is ${myVariable}" # If myVariable is unset or null then # assign "GeeksforGeeks" to it echo ${myVariable:="GeeksforGeeks"} echo "2. Value of myVariable is ${myVariable}" # unset myVariable unset myVariable # If myVariable is set then substitute # the value echo ${myVariable:+"GeeksforGeeks"} echo "3. Value of myVariable is $myVariable" myVariable="GeeksforGeeks" # If myVariable is set then substitute the value echo ${myVariable:+"Nainwal"} echo "4. Value of myVariable is $myVariable" # If myVaraible is not-set or null then print # the message echo ${myVariable:?"Message"} echo "5. Value of myVariable is ${myVariable}" # unset myVariable unset myVariable # If myVaraible is not-set or null then print # the message echo ${myVariable:?"Message"} echo "6. Value of myVariable is ${myVariable}"
Producción: