Команда PHP у сценарії має різні результати, ніж shell - php, bash, shell

Я маю наступні рядки в сценарії BASH:

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

printf -v ACTIONS_CMD "$ACTIONS_COMMAND" $FOLDER

$ACTIONS_CMD

Це відбувається всередині циклу для виконання однієї операції для кількох додатків Android. Коли я повторюю $ACTIONS_CMD і копіювати та вставляти команду, він виробляє правильний вихід, але сам скрипт запускає PHP, але не копіює його STDIN. Я знаю це, тому що PHP зависає, поки я не натискаю Ctrl-D на клавіатурі, а потім скаржиться, що не було введення.

Я спробував перемкнути команду PHP на

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

Коли перше ім'я файлу знаходиться в лапках (я думаю, що це повинно бути для безпеки), я отримую

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

і без лапок, він просто виводить у вікно термінала.

Якщо це важливо, це є GNU bash, version 3.2.51(1)-release (x86_64-apple-darwin13).

Відповіді:

1 для відповіді № 1

Ви не можете виконувати програми з перенаправленням вводу / виводу в такому рядку. Вона буде намагатися використовувати символи труби та кутів та файл як вхідний файл у програму, яку ви виконували.

Вам потрібно передати цей рядок в оболонку, щоб зробити перенаправлення.

Один із способів зробити це є:

bash -c "$ACTIONS_COMMAND"

Схожі запитання
Найбільш популярний