Отправка данных из PHP в скрипт bash - PullRequest
2 голосов
/ 26 ноября 2011

Я пытаюсь отправить данные из PHP в скрипт bash, а затем вывести данные обратно пользователю.Почему я не могу отправить "бобы" на simple.sh и вернуть его обратно?

В конце концов, моя цель - заставить мой веб-браузер выводить «бобы».Очень просто, но я не могу заставить его работать (полный нуб).

Вот мой test.php:

<code><?php
echo "<pre>";
    $var = 'beans';
    exec("/var/www/html/dev/simple.sh $var", $output);
    echo var_dump($output);
echo "
";?>

Вотmy simple.sh:

read var
echo $var

Что я делаю не так?

Ответы [ 4 ]

2 голосов
/ 26 ноября 2011

Вы не выполнили свой скрипт оболочки, поэтому вот правильный код:

<code>echo "<pre>";
    $var = 'beans';
    exec("sh /var/www/html/dev/simple.sh $var", $output);
    echo var_dump($output);
echo "
";

Кроме того, у вас что-то не так с вашим скриптом:

#!/bin/sh
echo $1

Примечание: команда READ предназначена только для сканирования строки с клавиатуры !! если вы хотите передать его аргументами, просто введите эти $ 1, $ 2, $ 3, ... это число аргументов, которое вы ввели один за другим.

1 голос
/ 26 ноября 2011

Ваш сценарий оболочки не делает то, что вы думаете, что он делает. read var будет читать пользовательский ввод, а не аргумент командной строки. Измените simple.sh на что-то вроде этого:

#!/bin/bash

echo $1

В этом сценарии предполагается, что вы хотите передать только первый аргумент сценарию оболочки. Если вам нужно больше, вам нужно соответствующим образом изменить скрипт. Я предполагаю, что вы в конечном итоге сделаете что-то совсем другое со своим сценарием оболочки, и параметры командной строки не являются целью, поэтому этого должно быть достаточно для вашего теста.

0 голосов
/ 26 ноября 2011

«read var» пытается прочитать строку из стандартного ввода и поместить ее в переменную.

Вы передаете $ var в качестве аргумента командной строки сценарию, а не передаете его на стандартный ввод.

0 голосов
/ 26 ноября 2011

вы получаете доступ к аргументам оболочки через $ 1, $ 2 и т. Д., Поэтому попробуйте это:

var=$1
echo $var
...