我的脚本如下所示:
#!/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 shell 的项目目录中,一切正常。
答案1
尝试将变量用双引号引起来。例子:echo "$COMMANDS_CODE"
您可以了解有关 shell 变量和引号的更多信息这里,在“引号的重要性”部分下。