La commande PHP dans le script a des résultats différents de shell - php, bash, shell

J'ai les lignes suivantes dans un script BASH:

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

printf -v ACTIONS_CMD "$ACTIONS_COMMAND" $FOLDER

$ACTIONS_CMD

Cela fonctionne à l'intérieur d'une boucle pour faire la même opération à plusieurs applications Android. Quand je fais écho à la $ACTIONS_CMD et copier et coller la commande, il produit la sortie correcte, mais le script lui-même démarre PHP, mais ne copie pas le STDIN. Je le sais parce que PHP se bloque jusqu'à ce que je pousse Ctrl-D sur le clavier, puis il se plaint il n'y avait pas d'entrée.

J'ai essayé de passer la commande PHP à

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

Lorsque le premier nom de fichier est entre guillemets (ce que je pense qu'il devrait être pour la sécurité), je reçois

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

et sans les guillemets, il sort juste à la fenêtre du terminal.

Si c'est important, c'est GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13).

Réponses:

1 pour la réponse № 1

Vous ne pouvez pas exécuter des programmes avec une redirection d'entrée / sortie dans une chaîne comme celle-ci. Il tentera d'utiliser les caractères de tuyau et d'angle ainsi que le fichier en entrée du programme exécuté.

Vous devez passer cette chaîne à un shell pour effectuer la redirection.

Une façon de faire est:

bash -c "$ACTIONS_COMMAND"

Menu