【问题标题】:Execute php script from bash , assign output to a bash variable从 bash 执行 php 脚本,将输出分配给 bash 变量
【发布时间】:2012-06-18 13:07:14
【问题描述】:

我有一个 bash 脚本,它需要执行一些 php 脚本并返回结果,例如

#!/bin/bash
/usr/bin/php -f $HOME/lib/get_fifobuild.php

脚本 get_fifobuild.php 返回一个我需要分配给 bash 变量的整数。如果有人帮助我,我将不胜感激。

谢谢:)

编辑: php show.php

<?php 
  echo phpinfo();
  exit;
?>

bash 脚本:

#!/bin/bash
HOME=`dirname $0`;
log(){
    NEW_LOG=$HOME/logs/cloud-`date +%d_%m_%Y`.log
    echo $1 >> $NEW_LOG
}
log "Date: `date`";
data=$(/usr/bin/php -f  $HOME/lib/show.php);
log $data;

输出:

Date: Fri Jun 15 19:16:00 PKT 2012
phpinfo()

还没有运气

【问题讨论】:

标签: php bash


【解决方案1】:
myvariable=$(/usr/bin/php -f $HOME/lib/get_fifobuild.php)

将您的 php 脚本的输出分配给一个名为“myvariable”的变量。

更新

这会将命令的输出分配给变量,但是由于您仍然遇到问题,我也许可以提出一些建议:

  1. 你在别处有 'get_builds.php' 和 'get_fifobuild.php'。

  2. 检查 $HOME 的设置是否正确。在这里使用不同的变量名称可能会更好,因为该环境变量通常设置为您的主目录。但是,这不太可能是问题,因为您正在从脚本中获取输出。

  3. 您提供的文本是否与您的 PHP 文件的准确内容一致?如果你有报价 在phpinfo() 附近,例如它将导致输出只是字符串“phpinfo()”。实际上,您根本不需要echo,可以将您的PHP文件的内容如下。

get_fifobuild.php:

<?php
    phpinfo();
?>

更新 2:

尝试将脚本更改为:

#!/bin/bash
HOME=`dirname $0`;
log(){
    NEW_LOG=$HOME/logs/cloud-`date +%d_%m_%Y`.log
    echo "$1" >> $NEW_LOG
}
log "Date: `date`";
data=$(/usr/bin/php -f $HOME/lib/show.php);
log "$data";

基本上在 'log' 和 'echo' 行中的变量周围添加双引号。您遇到的问题是只记录了您的 php 输出的第一行。

【讨论】:

  • 请检查问题编辑,我试过了,但没有运气
  • VAR=$(php -r "echo 213;")
【解决方案2】:
foobar=`/usr/bin/php -f $HOME/lib/get_fifobuild.php`

注意:这些是反引号。

【讨论】:

  • 请使用$() 约定而不是`` 约定。它更具可读性,并且不能嵌套反引号(而美元约定可以)。
  • 呃,显然我无法推翻我的反对意见,因为您没有编辑它足够,因此它显示为已编辑。有时SO是愚蠢的。所以我做了一个小小的编辑。 :-/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-30
  • 2017-07-17
  • 2012-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多