Comando PHP no script tem resultados diferentes de shell - php, bash, shell

Eu tenho as seguintes linhas em um script BASH:

ACTIONS_COMMAND="php -f $BASEDIR/scripts/activities.php < "$SRC_DIR/%s/AndroidManifest.xml""

printf -v ACTIONS_CMD "$ACTIONS_COMMAND" $FOLDER

$ACTIONS_CMD

Isso é executado dentro de um loop para fazer a mesma operação em vários aplicativos do Android. Quando eu ecoo $ACTIONS_CMD e copie e cole o comando, ele produz a saída correta, mas o próprio script inicia o PHP, mas não copia STDIN. Eu sei disso porque o PHP trava até eu empurrar Ctrl-D no teclado e depois reclama que não houve entrada.

Eu tentei mudar o comando PHP para

ACTIONS_COMMAND="cat "$SRC_DIR/%s/AndroidManifest.xml" | php -f $BASEDIR/scripts/activities.php"

Quando o primeiro nome de arquivo está entre aspas (o que eu acho que deveria ser por segurança),

cat: "apps/app_name/AndroidManifest.xml": No such file or directory
cat: |: No such file or directory
cat: php: No such file or directory
cat: -f: No such file or directory
<?php
... REST OF PHP SCRIPT ...

e sem as aspas, apenas sai para a janela do terminal.

Se isso importa, é GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13).

Respostas:

1 para resposta № 1

Você não pode executar programas com redirecionamento de entrada / saída em uma string como essa. Ele tentará usar os caracteres de canal e ângulo e o arquivo como entrada para o programa que você executou.

Você precisa passar essa string para um shell para fazer o redirecionamento.

Uma maneira de fazer isso é:

bash -c "$ACTIONS_COMMAND"