【问题标题】:Bash is not storing a returned PHP variable [duplicate]Bash 没有存储返回的 PHP 变量 [重复]
【发布时间】: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 @
  • 我现在可以正常工作了,但是 bash 脚本正在打印带有多个新行的变量。这是为什么呢?

标签: php bash variables argv


【解决方案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 中。我想在没有空间的情况下存储变量。这可能吗?
猜你喜欢
  • 2014-03-14
  • 2014-06-26
  • 2018-06-01
  • 2014-05-26
  • 1970-01-01
  • 2011-03-09
  • 1970-01-01
  • 2013-02-07
  • 2015-11-09
相关资源
最近更新 更多