Polecenie PHP w skrypcie ma inne wyniki niż shell - php, bash, shell

Mam następujące wiersze w skrypcie BASH:

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

printf -v ACTIONS_CMD "$ACTIONS_COMMAND" $FOLDER

$ACTIONS_CMD

To działa w pętli, aby wykonać tę samą operację dla kilku aplikacji Android. Kiedy odbieram echo $ACTIONS_CMD i skopiuj i wklej polecenie, wygeneruje poprawne wyjście, ale sam skrypt uruchamia PHP, ale nie kopiuje STDIN. Wiem to, ponieważ PHP zawiesza się, dopóki nie popchnę Ctrl-D na klawiaturze, a potem narzeka, że ​​nie było żadnych danych wejściowych.

Próbowałem zmienić polecenie PHP na

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

Kiedy pierwsza nazwa pliku jest cytowana (co moim zdaniem powinno być dla bezpieczeństwa), dostaję

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 ...

i bez cudzysłowów, po prostu wychodzi do okna terminala.

Jeśli to ma znaczenie, to jest GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13).

Odpowiedzi:

1 dla odpowiedzi № 1

Nie można wykonywać programów z przekierowaniem wejścia / wyjścia w taki ciąg. Spróbuje użyć znaków rur i kątów oraz pliku jako danych wejściowych do programu, który wykonałeś.

Musisz przekazać ten ciąg do powłoki, aby wykonać przekierowanie.

Jednym ze sposobów na to jest:

bash -c "$ACTIONS_COMMAND"