GNU/Linux >> Tutoriales Linux >  >> Linux

¿Por qué la sustitución de comandos de Shell engulle un carácter de nueva línea final?

Según el siguiente ejemplo, y como en mi pregunta reciente En bash, ¿dónde ha ido el carácter de salto de línea final? , quiero saber "por qué" sucede

  x="$(echo -ne "anbn")" ; echo -n "$x" | xxd -p 
# Output is: 610a62 
# The trailing newline from the 'echo' command
#   has been "deleted" by Command Substitution

Supongo que debe haber algo muy razón importante para una acción de shell, a saber, sustitución de comando, para eliminar algunos datos de la salida del comando que está sustituyendo...
pero no puedo entender esto, ya que parece ser la antítesis de lo que se supone hacer.. es decir. pasar la salida de un comando de nuevo al proceso de secuencia de comandos... Retener un carácter me parece extraño, pero supongo que hay una razón sensata para ello... Estoy ansioso por averiguar cuál es esa razón...

Respuesta aceptada:

Porque originalmente el shell no estaba destinado a ser un lenguaje de programación completo.

Es bastante difícil eliminar un n final de alguna salida de comando.
Sin embargo, para fines de visualización, casi todos los comandos terminan su salida con n , así que... tiene que haber una forma sencilla de eliminarlo cuando quieras usarlo en otro comando. Eliminación automática con $() la construcción fue la solución elegida.

Entonces, tal vez aceptes esta pregunta como respuesta:

¿Puedes encontrar una forma sencilla de eliminar el n final? si esto no se hizo automáticamente en el siguiente comando?

> echo The current date is "$(date)", have a good day!

Tenga en cuenta que es necesario citar para evitar que se rompan los espacios dobles que pueden aparecer en las fechas formateadas.


Linux
  1. ¿Cómo asignar la salida de un comando a una variable de shell?

  2. ¿Almacenar la salida del comando en la variable de Shell?

  3. ¿Por qué un shell de inicio de sesión 'sudo -i' interrumpe un argumento de cadena de comando Here-doc?

  4. ¿Cómo saber si la salida de un comando o script de Shell es Stdout o Stderr?

  5. ¿Por qué Ls -l produce un tamaño diferente de Ls -s?

Cómo redirigir la salida del comando de shell

¿Por qué la opción Ssh -t agrega Cr y Lf en la salida redirigida?

¿Por qué sale esta canalización de shell?

¿Qué significa la sintaxis |&en lenguaje shell?

Redirigir la salida del comando en la ventana acoplable

¿Por qué el comando Sudo tarda mucho en ejecutarse?