私のスクリプトは次のとおりです
#!/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"
シェル変数と引用符の詳細をご覧ください。ここ、「引用の重要性」セクションの下にあります。