Запустите функцию PHP внутри Bash (и сохраните результат в переменной bash) - PullRequest
7 голосов
/ 03 июня 2011

Я пытаюсь запустить функцию PHP внутри Bash ... но она не работает.

#! /bin/bash

/usr/bin/php << 'EOF'
<?php echo getcwd(); ?>
EOF

В действительности мне нужно было сохранить возвращаемое значение в переменной bash ...Кстати, я использую функцию php getcwd () только для иллюстрации операции bash.

ОБНОВЛЕНИЕ: Есть ли способ передачи переменной?

VAR='/$#'
php_cwd=`/usr/bin/php << 'EOF'
<?php echo preg_quote($VAR); ?>
EOF`
echo "$php_cwd"

Есть идеи?

Ответы [ 7 ]

8 голосов
/ 04 июня 2011
PHP_OUT=`php -r 'echo phpinfo();'`
echo $PHP_OUT;
8 голосов
/ 03 июня 2011
php_cwd=`/usr/bin/php << 'EOF'
<?php echo getcwd(); ?>
EOF`
echo "$php_cwd" # Or do something else with it
3 голосов
/ 04 июня 2011

В качестве альтернативы:

php_cwd = `php -r 'echo getcwd();'`

заменить getcwd (); при необходимости позвоните с вашим php кодом.

РЕДАКТИРОВАТЬ: ниндзя Дэвид Чан.

1 голос
/ 02 декабря 2017

Используйте '-R' в командной строке php. Он имеет встроенную переменную, которая читает входные данные.

VAR='/$#'
php_cwd=$(echo $VAR | php -R 'echo preg_quote($argn);')
echo $php_cwd
1 голос
/ 28 августа 2014

Это то, как вы можете встроить команды PHP внутри оболочки, т.е. * sh:

#!/bin/bash

export VAR="variable_value"
php_out=$(php << 'EOF'
<?
    echo getenv("VAR"); //input
?>
EOF)
>&2 echo "php_out: $php_out"; #output
0 голосов
/ 04 июня 2011

Вот что у меня сработало:

VAR='/$#'
php_cwd=`/usr/bin/php << EOF
<?php echo preg_quote("$VAR"); ?>
EOF`
echo "$php_cwd"
0 голосов
/ 04 июня 2011

У меня вопрос - почему вы не используете функции для печати текущего рабочего каталога в bash?Например:

#!/bin/bash
pwd # prints current working directory.

Или

#!/bin/bash
variable=`pwd`
echo $variable

Отредактировано : код выше изменен, чтобы работать без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...