Diferença na formatação entre a execução de um comando bash e um script

0

Eu não entendo porque há uma diferença em como a saída é formatada na saída padrão para comandos idênticos executados a partir de um script e diretamente do bash.

Quando executo ls -l da minha linha de comando bash, recebo uma nova linha no final de cada arquivo (resultando em um tipo de dado tabular), enquanto o mesmo comando é executado a partir do bash via $(ls -l) os mesmos dados, mas em uma única linha.

Se possível, por favor, deixe-me saber como posso modificá-lo (para o script).

    
por Ilan 20.02.2016 / 19:05

1 resposta

1

Quando você usa $(ls -l) , as novas linhas são removidas. É feito assim.

O mesmo que 'ls -l' , que é idêntico ao $(ls -l) preferido.

Quando você quiser fazer algo com a saída de ls -l , será necessário fazer isso de maneira diferente.

ls -l |while read xx
do
   echo $xx
   ((ii = ii + 1))
done

(Esteja ciente de que isso ( ls -l ) abre um novo shell e as variáveis definidas nesse shell não são "visíveis" fora desse shell, então ii não é visível fora desse loop.)

    
por Gregor Weertman 20.02.2016 / 20:25