Tenga en cuenta que no existe el comando line shell . Hay varias aplicaciones de shell disponibles para Linux.
Stéphane Chazelas
Respuestas:
21
Es muy similar a los backticks ''.
Se llama sustitución de comando ( especificación posix ) e invoca una subshell. El comando entre llaves $()o entre los backticks (``) se ejecuta en una subshell y la salida se coloca en el comando original.
A diferencia de los backticks, el $(...)formulario puede estar anidado. Entonces puede usar la sustitución de comandos dentro de otra sustitución.
Hay algunas diferencias en los caracteres de escape dentro de la sustitución. Prefiero la $(...)forma
En POSIX o POSIX como conchas ( ksh, bash, ash, zsh, yash...), es como ``: el interior de comandos $()se ejecuta y reemplazado por su salida estándar. La división de palabras y la generación de nombres de archivo se realizan a menos que$() que entre comillas dobles. Así
chmod 777 $(pwd)
debe reemplazarse con:
chmod 777"$(pwd)"
para evitar la división de palabras y la generación de nombre de archivo en la ruta actual del directorio de trabajo.
O incluso mejor (excepto bajo algunos shells, como zsh, en caso de que el directorio haya cambiado de nombre):
chmod 777"$PWD"
Ya que $PWD es una variable especial que contiene la ruta al directorio de trabajo actual en shells POSIX.
O mejor:
chmod 777.
Dado que la .entrada en el directorio actual es un enlace duro a ese directorio en sí.
Esto $()se usa para ejecutar un comando principalmente dentro de otro comando.
chmod 777 $(pwd)
pwdEl comando proporciona el directorio de trabajo actual. Entonces, cuando todo se ejecuta, la salida de pwd reemplazará su posición y servirá como argumento para chmod, y el resultado es que todo su directorio de trabajo actual obtiene el permiso 777que supongo que nunca debería usarse en el entorno de producción;).
Respuestas:
Es muy similar a los backticks ''.
Se llama sustitución de comando ( especificación posix ) e invoca una subshell. El comando entre llaves
$()
o entre los backticks (``) se ejecuta en una subshell y la salida se coloca en el comando original.A diferencia de los backticks, el
$(...)
formulario puede estar anidado. Entonces puede usar la sustitución de comandos dentro de otra sustitución.Hay algunas diferencias en los caracteres de escape dentro de la sustitución. Prefiero la
$(...)
formafuente
echo `echo \`echo foo\`` bar
En POSIX o POSIX como conchas (
ksh
,bash
,ash
,zsh
,yash
...), es como``
: el interior de comandos$()
se ejecuta y reemplazado por su salida estándar. La división de palabras y la generación de nombres de archivo se realizan a menos que$()
que entre comillas dobles. Asídebe reemplazarse con:
para evitar la división de palabras y la generación de nombre de archivo en la ruta actual del directorio de trabajo.
O incluso mejor (excepto bajo algunos shells, como zsh, en caso de que el directorio haya cambiado de nombre):
Ya que
$PWD
es una variable especial que contiene la ruta al directorio de trabajo actual en shells POSIX.O mejor:
Dado que la
.
entrada en el directorio actual es un enlace duro a ese directorio en sí.fuente
Esto
$()
se usa para ejecutar un comando principalmente dentro de otro comando.pwd
El comando proporciona el directorio de trabajo actual. Entonces, cuando todo se ejecuta, la salida de pwd reemplazará su posición y servirá como argumento parachmod
, y el resultado es que todo su directorio de trabajo actual obtiene el permiso777
que supongo que nunca debería usarse en el entorno de producción;).fuente