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

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

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

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

  • Как создать каталог, объединив два имени?
  • Поиск файлов более поздним, чем один день, и копия
  • В то время как проверка состояния JBoss в цикле вниз или нет,
  • Нажмите любую клавишу для приостановки сценария оболочки, нажмите еще раз, чтобы возобновить
  • Как объединить два файла в один с столбцами для данных каждого файла?
  • Неправильный способ перечисления версий python из bash
  •  /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 все работает отлично.

  • Как удалить лишний «мусор» из этого файла журнала?
  • Добавление двух чисел с помощью expr
  • Как запустить команду и получить ее код выхода меньше символов?
  • Почему этот скрипт не принимает два аргумента?
  • В чем смысл $ * в сценарии оболочки?
  • как проверить каталог пуст
  • One Solution collect form web for “Присвоение вывода команды переменной означает странные результаты”

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

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

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