PHP príkaz v skripte má iné výsledky ako shell - php, bash, shell

Mám nasledujúce riadky v skripte BASH:

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

printf -v ACTIONS_CMD "$ACTIONS_COMMAND" $FOLDER

$ACTIONS_CMD

To sa spúšťa vo vnútri slučky, aby vykonávala rovnakú operáciu s viacerými aplikáciami pre systém Android. Keď zopakujem $ACTIONS_CMD a skopírujte a vložte príkaz, produkuje správny výstup, ale samotný skript začína PHP, ale nekopíruje STDIN, Viem to preto, že PHP visí, kým sa nestlakám Ctrl-D na klávesnici a potom sa sťažuje, že nebol žiadny vstup.

Pokúsil som sa prepnúť príkaz PHP na

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

Keď je prvý názov súboru v úvodzovkách (čo si myslím, že by malo byť pre bezpečnosť), dostanem

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

a bez úvodzoviek, len výstupy do okna terminálu.

Ak je to dôležité, je GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13),

odpovede:

1 pre odpoveď č. 1

Nemôžete spustiť programy s presmerovaním vstupu / výstupu v takomto reťazci. Pokúsi sa použiť písmená a uholníky a súbor ako vstup do spusteného programu.

Musíte preniesť tento reťazec na shell, aby ste mohli presmerovať.

Jedným zo spôsobov, ako to urobiť, je:

bash -c "$ACTIONS_COMMAND"

Ponuka