在Bash中运行PHP函数(并将返回值保存在Bash变量中)


Run PHP function inside Bash (and keep the return in a bash variable)

我正在尝试在Bash中运行一个PHP函数。。。但它不起作用。

#! /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"

有什么想法吗?

php_cwd=`/usr/bin/php << 'EOF'
<?php echo getcwd(); ?>
EOF`
echo "$php_cwd" # Or do something else with it
PHP_OUT=`php -r 'echo phpinfo();'`
echo $PHP_OUT;

或者:

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

替换getcwd();根据需要使用php代码进行调用。

编辑:大卫·陈的《忍者》。

这就是在shell中内联PHP命令的方法,即*sh:

#!/bin/bash
export VAR="variable_value"
php_out=$(php << 'EOF'
<?
    echo getenv("VAR"); //input
?>
EOF)
>&2 echo "php_out: $php_out"; #output

使用php命令行的'-R'。它有一个读取输入的内置变量。

VAR='/$#'
php_cwd=$(echo $VAR | php -R 'echo preg_quote($argn);')
echo $php_cwd

这就是我的工作原理:

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

我有一个问题-为什么不使用函数打印bash中的当前工作目录?类似:

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

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

已编辑:上面的代码已更改为可以正常工作。