$()から返された文字列を他のコマンドの複数の引数として使用するにはどうすればよいですか?
マイユースケース: composer.jsonファイルにリストされているすべての開発パッケージを削除する必要があります。projectx/package-niceという2つのパッケージがあるとしましょうprojecty/package-good。削除するには、以下を実行する必要があります。 $ composer remove --dev projectx/package-nice projecty/package-good そのため、パッケージリストを抽出するために次のコマンドを作成します。 echo $(composer show -s | grep -E "^[a-z]+/[0-9a-z_-]+" | awk '{print $1}' | xargs) これにより、次のようにパッケージのリストが返されます。projectx/package-nice projecty/package-good そのため、bashは戻り値を引用符で囲んだ単一の文字列として解釈するため、成功しないまま次のコマンドを実行してみました。 $ composer remove --dev $(composer show -s | grep -E "^[a-z]+/[0-9a-z_-]+" | awk '{print $1}' | xargs) これは次のとおりです。 $ composer remove --dev "projectx/package-nice projecty/package-good" それでは、私が何を間違っているのでしょうか? 編集する: 問題は解析にはありません。$()スペースで区切られた予想値を返します。問題は、bashがこの戻り値を一意の値として解釈する理由です。 @MarcusMüllerが指摘したように、この問題は発生しないでください。私は走っています/etc: $ ls $(ls | head -n 2) そして、実行されたコマンドはls file1 file2代わりなので、ls "file1 file2"なぜこれが起こるのか理解できません。おそらく作曲家はPHPで実行されるスクリプトであり、これが何かを邪魔しているからでしょうか? ありがとうございます。