(6 respuestas)
Cerrado hace 7 años.
¿Cuál es la diferencia entre recopilar una salida de comando en el script de Shell usando `comando` y $(comando)? Por ejemplo:
# IP1=$(ifconfig eth0 | grep -e "inet " | cut -d: -f2 | awk '{print $1}')
# IP2=`ifconfig eth0 | grep -e "inet " | cut -d: -f2 | awk '{print $1}'`
# echo $IP1 $IP2
> 192.241.145.112 192.241.145.112
Respuesta aceptada:
La principal diferencia es que los acentos graves no se anidan:no puede incrustar un comando con acento grave dentro de otro. (En realidad, puede, pero debe hacer una barra invertida y escapar de ellos, y se vuelve más complicado a partir de ahí). Esa fue, creo, la principal motivación para crear la nueva sintaxis $(command)
.
El $(command)
La sintaxis también proporciona un atajo conveniente para interpolar el contenido de un archivo:$(<filename)
es equivalente a $(cat filename)
.
Otra diferencia:$()
no es compatible con algunos shells comunes.