php - 从 bash 执行 php 脚本,将输出分配给 bash 变量

标签 php bash

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

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

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

谢谢:)

编辑: php 显示.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()

还没有运气

最佳答案

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 输出的第一行。

关于php - 从 bash 执行 php 脚本,将输出分配给 bash 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11051064/

相关文章:

php - 使用 PHP 的 Paypal 订阅检查非托管按钮

php - 函数仅定义但立即执行

php - 如何将不同部分的用户统计信息存储在数据库(mysql)中?

php - Yii2 显示记录标签

完整路径文件名的linux相对路径

regex - bash 正则表达式查找包含重复单词的行

shell脚本和C之间的通信

javascript - 在我的特定 PHP 代码中处理 slider 标签

mysql:找不到命令,但它在我的路径中

regex - 如何使用十六进制表示来查找特殊字符(控制字符)