내 스크립트는 다음과 같습니다
#!/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
내 bash 쉘의 프로젝트 디렉토리에서는 모든 것이 잘 작동합니다.
답변1
변수를 큰따옴표로 묶어보세요. 예:echo "$COMMANDS_CODE"
쉘 변수 및 따옴표에 대해 자세히 알아볼 수 있습니다.여기, "인용의 중요성" 섹션 아래에 있습니다.