Есть ли команда сценария, которая может выполнять определенный метод php из файла php с помощью сценария bash?

Я считаю, что название говорит само за себя, но я уточню немного больше. У меня есть файл php с именем hello-world.php. У меня также есть сценарий bash под названием testBash.sh.

Внутри hello-world.php у меня есть два метода helloWorld() и helloName($name).

В основном то, что я хочу сделать, это из моего скрипта bash (testBash.sh)... Я хочу передать параметр и выполнить метод helloName($name) . Параметр будет задан из скрипта bash.

Вот что у меня есть до сих пор.

testBash.sh

INPUT="Bobby"

// THIS IS WHERE I AM HAVING TROUBLE
TEST= php -r "require 'hello-world.php'; helloName("$INPUT");"

echo "$TEST"

hello-world.php

function helloWorld() {

    return "Hello, World!";

}

function helloName($name) {

    return "Hello, $name!";

}

В идеальном мире, когда я повторяю «$ TEST», должны отображаться результаты этой функции.

Пример: Привет, Бобби!

Это возможно? Я искал в Интернете решения, но это самое близкое, что я нашел. Любой вклад или совет были бы замечательными. Спасибо!


person Chandler Long    schedule 28.10.2019    source источник
comment
Как насчет TEST=$(php -r "require 'hello-world.php'; echo helloName(\"$INPUT\");")? Не на банкомате компьютера с Linux, поэтому не могу проверить.   -  person Jeto    schedule 29.10.2019
comment
Вау, это было именно то, что я искал. Работает отлично! Нельзя ли немного поподробнее об этом?   -  person Chandler Long    schedule 29.10.2019
comment
Конечно, я добавлю это как ответ с небольшим объяснением, дайте мне минуту.   -  person Jeto    schedule 29.10.2019


Ответы (1)


Это должно сделать это:

TEST=$(php -r "require 'hello-world.php'; echo helloName(\"$INPUT\");")

Я думаю, это тоже должно работать (одинарные кавычки для параметра функции):

TEST=$(php -r "require 'hello-world.php'; echo helloName('$INPUT');")

В основном,

  • добавление echo в PHP гарантирует, что команда php отправит результат helloName на вывод,
  • $(command) сообщает команде bash, чтобы она возвращала свой вывод как значение,
  • это значение, наконец, присваивается TEST.
person Jeto    schedule 28.10.2019