Vi la siguiente sintaxis en un script bash:
>$(command) &
Sé que el signo y &al final ejecuta un comando en segundo plano, pero nunca lo he visto en combinación con el signo de dólar más los corchetes alrededor del comando.
¿Qué hace?
Vi la siguiente sintaxis en un script bash:
>$(command) &
Sé que el signo y &al final ejecuta un comando en segundo plano, pero nunca lo he visto en combinación con el signo de dólar más los corchetes alrededor del comando.
¿Qué hace?
Respuestas:
Teniendo en cuenta la sintaxis $(command) &, el resultado es el mismo que si se toma la salida de correr solo commandy luego trató de correr que como un comando. Y todo esto se haría en segundo plano, lo que significa que no habría salida visible o colgando en el terminal.
Por ejemplo, si tuviéramos un archivo de texto mycommand.txtcon el contenido:
echo "Hello World"
Entonces el comando
$(cat mycommand.txt) &
sería equivalente a correr
echo "Hello World" &
Pero como agregamos el ampersand ( &), no veríamos ningún resultado de este comando, por lo que sería bastante inútil en este ejemplo.
$(variable)El signo de dólar antes de la cosa entre paréntesis generalmente se refiere a una variable. Esto significa que este comando está pasando un argumento a esa variable desde un script bash o está obteniendo el valor de esa variable para algo. La diferencia en las secuencias de comandos bash para invocar y declarar variables es la siguiente:
Declare una variable sin el signo de dólar y llámela con un signo de dólar. Por ejemplo, un script que contiene esto
#!/bin/bash
STR="Hello World!"
echo $STR
Daría salida a esto
Hello World!
()- Sustitución de comandosLa sustitución de comandos permite que la salida de un comando reemplace el comando en sí. La sustitución de comandos ocurre cuando un comando se incluye de la siguiente manera:
$(command)
o
`command`
Bash realiza la expansión ejecutando el comando en un entorno de subshell y reemplazando la sustitución del comando con la salida estándar del comando, con cualquier nueva línea final eliminada. Las líneas nuevas incrustadas no se eliminan, pero pueden eliminarse durante la división de palabras. La sustitución del comando $(cat file)se puede reemplazar por el equivalente pero más rápido $(< file).
&- Proceso de fondoY luego, el &símbolo de unión, o símbolo, es como usted dijo, utilizado para ejecutarlo en segundo plano.
toma la salida de "comando" como un comando y lo ejecuta en segundo plano. Su funcionalidad es comparable con "eval"
$( ), pero no hay descanso. Es solo$(command) &que eso es lo que me confunde.