Il comando PHP in script ha risultati diversi da shell - php, bash, shell

Ho le seguenti righe in uno script BASH:

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

printf -v ACTIONS_CMD "$ACTIONS_COMMAND" $FOLDER

$ACTIONS_CMD

Questo funziona all'interno di un ciclo per fare la stessa operazione a diverse applicazioni Android. Quando echo il $ACTIONS_CMD e copia e incolla il comando, produce l'output corretto, ma lo script stesso avvia PHP, ma non copia il file STDIN. Lo so perché PHP si blocca fino a quando non spingo Ctrl-D sulla tastiera e poi si lamenta non c'era alcun input.

Ho provato a cambiare il comando PHP in

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

Quando il primo nome del file è tra virgolette (che penso dovrebbe essere per sicurezza), ottengo

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 senza le virgolette, viene semplicemente inviato alla finestra del terminale.

Se è importante, lo è GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13).

risposte:

1 per risposta № 1

Non è possibile eseguire programmi con reindirizzamento input / output in una stringa del genere. Tenterà di utilizzare i caratteri pipe e angle e il file come input per il programma che hai eseguito.

È necessario passare quella stringa a una shell per eseguire il reindirizzamento.

Un modo per farlo è:

bash -c "$ACTIONS_COMMAND"

Menu