【问题标题】:Passing variables from php to shell script将变量从 php 传递到 shell 脚本
【发布时间】:2024-01-23 05:01:01
【问题描述】:

我有一个 php 脚本:

#!/usr/bin/php -q
<?php
    $IFO=750;
    $MDO=650;
?>

现在我想获取变量 $IFO 和 $MDO 并将它们传递给一个 shell 脚本,这样如果在 shell 脚本中我要声明:

echo $IFO
echo $MDO

我会得到一个输出

750 650

基于它在 php 脚本中所说的内容。

我应该在 php 脚本或 shell 脚本中添加什么才能起作用?

【问题讨论】:

  • 将它们作为参数传递给 shell 脚本?
  • zneak 提到的一种方法是使用 exec 从 php 脚本本身调用您的 shell 脚本,并将值作为参数传递。

标签: php bash shell


【解决方案1】:

如果您在 PHP 环境中将 shell 脚本作为子进程调用,则可以使用 putenv 设置这些值:

putenv("IFO=$IFO");
putenv("MDO=$MDO");

// later, back at the farm
shell_exec('your_script');

如果您正在处理一个您无法修改且已经引用这些名称的 shell 脚本,这是最好的选择。如果 shell 脚本没有从 PHP 继承环境,它将无法工作。如果 PHP 负责生成 shell 进程,它应该继承环境。

如果不是 PHP,您将需要一个真正的共享接口,例如 IPC、文件或消息队列。

【讨论】: