Unix / Linux: sustitución de shell
¿Qué es la sustitución?
El shell realiza una sustitución cuando encuentra una expresión que contiene uno o más caracteres especiales.
Ejemplo
Aquí, el valor de impresión de la variable se sustituye por su valor. Mismo tiempo,"\n" se sustituye por una nueva línea -
#!/bin/sh
a=10
echo -e "Value of a is $a \n"
Recibirás el siguiente resultado. Aquí el-e La opción habilita la interpretación de escapes de barra invertida.
Value of a is 10
A continuación se muestra el resultado sin -e opción -
Value of a is 10\n
Las siguientes secuencias de escape que se pueden utilizar en el comando echo:
No Señor. | Escape y descripción |
---|---|
1 | \\ barra invertida |
2 | \a alerta (BEL) |
3 | \b retroceso |
4 | \c suprimir nueva línea final |
5 | \f formulario de alimentación |
6 | \n nueva línea |
7 | \r retorno de carro |
8 | \t pestaña horizontal |
9 | \v pestaña vertical |
Puedes usar el -E opción para deshabilitar la interpretación de los escapes de barra invertida (predeterminado).
Puedes usar el -n opción para deshabilitar la inserción de una nueva línea.
Sustitución de comando
La sustitución de comandos es el mecanismo mediante el cual el shell ejecuta un conjunto determinado de comandos y luego sustituye su salida en lugar de los comandos.
Sintaxis
La sustitución del comando se realiza cuando un comando se da como:
`command`
Al realizar la sustitución del comando, asegúrese de utilizar la comilla inversa, no el carácter de comilla simple.
Ejemplo
La sustitución de comandos se usa generalmente para asignar la salida de un comando a una variable. Cada uno de los siguientes ejemplos demuestra la sustitución de comandos:
#!/bin/sh
DATE=`date`
echo "Date is $DATE"
USERS=`who | wc -l`
echo "Logged in user are $USERS"
UP=`date ; uptime`
echo "Uptime is $UP"
Tras la ejecución, recibirá el siguiente resultado:
Date is Thu Jul 2 03:59:57 MST 2009
Logged in user are 1
Uptime is Thu Jul 2 03:59:57 MST 2009
03:59:57 up 20 days, 14:03, 1 user, load avg: 0.13, 0.07, 0.15
Sustitución de variables
La sustitución de variables permite al programador de shell manipular el valor de una variable en función de su estado.
Aquí está la siguiente tabla para todas las posibles sustituciones:
No Señor. | Forma y descripción |
---|---|
1 | ${var} Sustituye el valor de var . |
2 | ${var:-word} Si var es nulo o no establecido, palabra se sustituye porvar. El valor de var no cambia. |
3 | ${var:=word} Si var es nulo o no establecido, var se establece en el valor deword. |
4 | ${var:?message} Si var es nulo o no está establecido, el mensaje se imprime con el error estándar. Esto verifica que las variables estén configuradas correctamente. |
5 | ${var:+word} Si se establece var , word se sustituye por var. El valor de var no cambia. |
Ejemplo
A continuación se muestra el ejemplo para mostrar varios estados de la sustitución anterior:
#!/bin/sh
echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"
echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}"
unset var
echo ${var:+"This is default value"}
echo "3 - Value of var is $var"
var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"
echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"
Tras la ejecución, recibirá el siguiente resultado:
Variable is not set
1 - Value of var is
Variable is not set
2 - Value of var is Variable is not set
3 - Value of var is
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix