Bash 没有存储返回的 PHP 变量 [重复]

Posted

技术标签:

【中文标题】Bash 没有存储返回的 PHP 变量 [重复]【英文标题】:Bash is not storing a returned PHP variable [duplicate] 【发布时间】:2019-09-02 09:17:47 【问题描述】:

我有一个 bash 脚本,我想将一个变量传递给 php 脚本,PHP 脚本将执行并返回一些应该存储在 bash 变量中的内容。我的 bash 脚本代码是这样的

ip="192.168.1.4"
version=`/usr/bin/php checkVer.php $ip`

所以在这两行代码中,我想将 $ip 作为变量传递给 checkVer.php 脚本,然后该脚本将执行一些代码,返回一些内容,并且该返回将存储在 bash 变量版本中。但是, version= 仅返回 $ip 变量。这是为什么呢?

这是 PHP 脚本

$ip = $argv[1];
if  ($ip == "192.168.1.4") 
     return true;

但是,bash 变量 version 不存储 true 它是存储 IP 地址

【问题讨论】:

你能告诉我们bash代码吗? bash 代码是第一个代码段 命令替换返回您的php 脚本打印的任何内容, 而不是它returns 的内容。 Bash 没有“真”或“假”,只有字符串变量(尽管返回码 0 表示流控制语句 ifwhileuntil 成功,所以你可以说 @987654333 @ 还有切线***.com/questions/17336915/…和***.com/questions/15013481/… 我现在可以正常工作了,但是 bash 脚本正在打印带有多个新行的变量。这是为什么呢? 【参考方案1】:

在 PHP 中使用 echo 代替 return

<?php
$ip = $argv[1];
if($ip == "192.168.1.4")
   echo 1;

?>

重击:

ip="192.168.1.4"
version=`/usr/bin/php -f checkVer.php $ip`
echo $version

结果:

1

【讨论】:

这可行,但由于某种原因,它在变量的字符之前返回一个空格。因此,如果我的版本等于 0,它将在 0 之前放置一个空格。如果我使用 echo "$version" | xargs 然后它将摆脱空间,但我需要以某种方式将其存储在变量中而不是 echo 中。我想在没有空间的情况下存储变量。这可能吗?

以上是关于Bash 没有存储返回的 PHP 变量 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

按内容从bash数组中删除元素(存储在变量中)而不留下空白槽[重复]

将python脚本的输出返回到bash变量[重复]

在 Bash 中同时捕获标准输出和标准错误 [重复]

通过bash将输出重定向到文件[重复]

将所有输出重定向到 Bash 中的文件 [重复]

将数据库中的计数作为变量返回到 PHP [重复]