Perché non c'è una nuova riga alla fine della citazione di una subshell e del passaggio dei risultati all'eco?


9

Quando faccio ls | grep pngl'output di grep è:

2015-05-15-200203_1920x1080_scrot.png 
2015-05-16-025536_1920x1080_scrot.png

(Nome del file, ritorno a capo, il nome del file, nuova riga)

quindi, echo $(ls | grep png)genera:

2015-05-15-200203_1920x1080_scrot.png 2015-05-16-025536_1920x1080_scrot.png

(nome file, spazio dalla suddivisione in parole, nome file, newline !! da echo !!)

Va tutto bene, ma quando lo faccio per evitare la divisione della parola:, echo "$(ls | grep png)"l'output è:

2015-05-15-200203_1920x1080_scrot.png 
2015-05-16-025536_1920x1080_scrot.png

E la mia domanda è: dov'è la seconda riga (una dovrebbe essere di grep e una di eco)?

Risposte:


8

Questa è la nuova riga echo, puoi verificarla usando echo -nper sopprimere la nuova riga finale:

echo -n "$(ls | grep png)"

La sostituzione del comando rimuove tutte le nuove righe finali, l'ultima riga aggiunta è stata aggiunta echo, grepnon ha nulla a che fare qui.


"La sostituzione del comando rimuove tutte le nuove righe finali" - questo è tutto! Grazie
MichalH,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.