Sustitución de comandos en Shell Script
La entrada de hoy es muy corta, pero fundamental para que podamos realizar nuestros script.
Si quiero que mi script muestre la fecha actual símplemente podré
date +%F
Al llegar esa línea se ejecuta la orden y se muestra el resultad por pantalla. Pero, ¿qué pasa si quiero acompañarla de un mensaje por ejemplo deseo la salida: Hoy es 2020-08-05?. Podríamos intentar usar el comando echo
para la frase y date
para la fecha actual, de la forma:
echo "Hoy es date +%F"
Pero el resultado no sería el esperado ya que se ejecutaría el comando echo
y todo lo demás se considera parámetro para el echo
, así que hay que especificar que una parte de esa línea es otro comando que se tiene que ejecutar para obtener un resultado. A esto se llama sustitución de comandos.
Sustitución de comandos
Permite ejecutar un comando e insertar en valor devuelto por éste, en cualquier lugar de otra instrucción. Para ello se introduce la orden entre $()
o entre comillas invertidas ` `
Ejemplos
echo Hoy es: $(date +%F)
=> Mostrará por pantalla la fecha actual Hoy es 2019-10-10
echo El directorio actual ocupa: `du -sh .`
=> Mostrará un mensaje indicando cuánto ocupa el directorio actual El directorio actual ocupa: 50MB .
Aunque los dos son equivalentes, a veces es mejor utilizar $()
por claridad y sobre todo cuando se van a anidar unas ejecuciones dentro de otras.