Atribuindo saída de comando para variável dá resultados estranhos

2

Meu script é assim:

#!/bin/sh
PROJECT_DIR=$(cd -P -- "$(dirname -- "$0")" && pwd -P)

COMMANDS_CODE=$(php $PROJECT_DIR/bin/console generate:code)

echo $COMMANDS_CODE

A saída tem todas as novas linhas removidas (o que não acontece se eu chamar o script diretamente) e contém alguns caminhos estranhos no começo assim:

/bin /boot /cdrom /dev /etc /home 
/initrd.img /lib /lib64 /lost+found 
/media /mnt /opt /proc /root /sbin 
/selinux /srv /sys /tmp /usr /var /vmlinuz 
... here starts the actual output but without any newlines ...

(O texto acima é uma string longa que é ecoada. Acabei de adicionar algumas novas linhas para legibilidade)

O que está acontecendo lá?

Se eu fizer um

php bin/console generate:code

no diretório do meu projeto no meu bash shell, tudo funciona bem.

    
por Max 28.07.2012 / 22:18

1 resposta

5

Tente envolver a variável entre aspas duplas. Exemplo: echo "$COMMANDS_CODE"

Você pode aprender mais sobre variáveis shell e aspas aqui , na seção "A importância das aspas".

    
por 28.07.2012 / 23:53