GNU/Linux >> Linux Esercitazione >  >> Linux

Perché la sostituzione del comando Shell divora un carattere di nuova riga finale?

Come nel seguente esempio, e come nella mia recente domanda In bash, dov'è finito il carattere di nuova riga finale? , voglio sapere "perché" succede

  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

Presumo che debbano essercene alcuni molto motivo significativo per un'azione della shell, vale a dire Command Substitution, per eliminare effettivamente alcuni dati dall'output del comando che sta sostituendo...
ma non riesco a capire questo, poiché sembra essere l'antitesi di ciò che è presupposto fare.. es. ritrasferire l'output di un comando nel processo di sceneggiatura... Trattenere un personaggio mi sembra strano, ma suppongo che ci sia una ragione ragionevole... Sono ansioso di scoprire quale sia questa ragione...

Risposta accettata:

Perché la shell non era originariamente concepita per essere un linguaggio di programmazione completo.

È abbastanza difficile rimuovere un n finale dall'output di alcuni comandi.
Tuttavia, ai fini della visualizzazione, quasi tutti i comandi terminano il loro output con n , quindi... ci deve essere un modo semplice per rimuoverlo quando vuoi usarlo in un altro comando. Rimozione automatica con $() la costruzione è stata la soluzione scelta.

Quindi, forse accetterai questa domanda come risposta:

Puoi trovare un modo semplice per rimuovere il n finale se ciò non è stato eseguito automaticamente nel comando successivo?

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

Tieni presente che le virgolette sono obbligatorie per evitare di distruggere gli spazi doppi che potrebbero apparire nelle date formattate.


Linux
  1. Qual è la differenza nell'ottenere l'output del comando usando `command`e $(command) in Shell??

  2. Perché l'opzione Ssh -t aggiunge Cr e Lf nell'output reindirizzato?

  3. Come sapere se l'output di un comando o di uno script di shell è Stdout o Stderr?

  4. Perché questa pipeline di shell termina?

  5. Cosa significa la sintassi |&nel linguaggio della shell?

Come reindirizzare l'output del comando della shell

Perché una shell di accesso "sudo -i" interrompe un argomento della stringa di comando Here-doc?

Perché Ls -l genera una dimensione diversa da Ls -s?

Reindirizzamento dell'output del comando nella finestra mobile

Perché slabtop -o restituisce solo le prime 23 righe quando il comando viene reindirizzato?

Nascondere l'output di un comando shell solo in caso di successo?