Присвоение вывода команды переменной означает странные результаты

Мой скрипт выглядит так:

#!/bin/sh PROJECT_DIR=$(cd -P -- "$(dirname -- "$0")" && pwd -P) COMMANDS_CODE=$(php $PROJECT_DIR/bin/console generate:code) echo $COMMANDS_CODE 

У выхода есть все строки новой строки (что не происходит, если я вызываю скрипт напрямую) и содержит некоторые странные пути в начале:

 /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 ... 

(Вышеуказанная актуальна одна длинная строка, которая повторяется, я просто добавил несколько строк для чтения)

Что там происходит?

Если я сделаю

 php bin/console generate:code 

в моем проекте dir в моей bash shell все работает отлично.

  • Почему команда exit не выходит из вложенного цикла?
  • напечатать IP-адрес с именем интерфейса
  • Удалите определенный файл из каталога, если он единственный
  • Для цикла в bash-скриптах
  • Как создать функцию, которая принимает имя с целым суффиксом в качестве аргумента и увеличивает этот суффикс?
  • Как написать скрипт, который смотрит каталог для команды lessc?
  • / shell-script: синтаксическая ошибка около неожиданного токена `done '
  • Как отобразить всю строку текста?
  • One Solution collect form web for “Присвоение вывода команды переменной означает странные результаты”

    Попробуйте обернуть переменную в двойные кавычки. Пример: echo "$COMMANDS_CODE"

    Вы можете узнать больше о переменных оболочки и кавычек здесь , в разделе «Важность котировочных знаков».

    Linux и Unix - лучшая ОС в мире.