Има ли скриптова команда, която може да изпълни конкретен 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