Domanda

Ho appena imparato, citando in alcuni casi, e ho fatto qualcosa per testarlo, ecco cosa ho appena fatto,

$ xfs=$(find . -type f -perm -111)  #find all files with x-perm
$ echo "$xfs"
./b.out 
./a.out
$ echo $xfs
./b.out ./a.out  #why all in one line, but the above takes two?

Se $xfs contiene \n, PER QUANTO NE SO, echo -e si espanderà \n, ma come può echo "$xfs" prendere 2 righe?

È stato utile?

Soluzione

Qualsiasi spazio bianco è normalmente in shell considerato un separatore di argomenti. Pertanto, il tuo primo esempio ha due argomenti. echo Stampa gli argomenti separati da uno spazio e questo è il comportamento che vedi nel tuo secondo esempio.

Tuttavia, quando usi le citazioni, qualsiasi cosa tra di loro è un argomento ed è stampato letteralmente. L'unico argomento nel tuo primo esempio contiene già una nuova linea, quindi è stampato con una nuova linea.

Il -e Opzione da bash echo incorporato regola l'espansione di sequenze di fuga come \n; Tuttavia, non hai sequenze di fuga. La variabile contiene una nuova linea letterale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top