GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la diferencia entre $(cosas) y `cosas`?

Hay dos sintaxis para la sustitución de comandos:con paréntesis de dólares y con acentos graves.
Ejecutar top -p $(pidof init) y top -p `pidof init` da la misma salida. ¿Son estas dos formas de hacer lo mismo o hay diferencias?

Respuesta aceptada:

Las comillas inversas de estilo antiguo ` ` trate las barras diagonales inversas y el anidamiento un poco diferente. El nuevo estilo $() interpreta todo lo que hay entre ( ) como un comando.

echo $(uname | $(echo cat))
Linux

echo `uname | `echo cat``
bash: command substitution: line 2: syntax error: unexpected end of file
echo cat

funciona si se escapan las comillas inversas anidadas:

echo `uname | `echo cat``
Linux

barra invertida divertida:

echo $(echo '\')
\

echo `echo '\'`

El nuevo estilo $() se aplica a todos los shells compatibles con POSIX.
Como señaló mouviciel, el estilo antiguo ` ` podría ser necesario para shells más antiguos.

Aparte del punto de vista técnico, el estilo antiguo ` ` también tiene una desventaja visual:

  • Difícil de notar:I like $(program) better than `program`
  • Fácilmente confundido con una comilla simple:'`'`''`''`'`''`'
  • No es tan fácil de escribir (tal vez ni siquiera en el diseño estándar del teclado)

(y SE usa ` ` para mis propios fines, fue un dolor escribir esta respuesta 🙂


Linux
  1. ¿La diferencia entre [[ $a ==Z* ]] y [ $a ==Z* ]?

  2. ¿La diferencia entre .exrc y .vimrc?

  3. ¿Cuál es la diferencia entre un usuario normal y un usuario del sistema?

  4. La diferencia entre '$ . Foo' y '$ ./foo'??

  5. ¿La diferencia entre 'env' y 'printenv'?

¿Cuál es la diferencia entre Linux y Unix?

¿Cuál es la diferencia entre Print y Printf en Awk?

¿Cuál es la diferencia entre Ddrescue, Gddrescue y Dd_rescue?

¿Qué es un Hipervisor? ¿Cuál es la diferencia entre el tipo 1 y 2?

¿Cuál es la diferencia entre curl y Wget?

¿Cuál es la diferencia entre ls y l?