将变量从bash传递给php时出错

我有以下文件

vars.txt

C=1234567890

Ascript.PHP

#!/usr/bin/PHP
<?PHP
var $C="$argv[1]";
echo "\n $C \n";

$con = MysqL_connect('localhost','root','123') or die ("No connected");
MysqL_select_db("test_database",$con);

if($C !=''){
  $rs = MysqL_query("SELECT name FROM test_table WHERE `identifier`= '$C'");
  while($fields = MysqL_fetch_row($rs)){
    $file = fopen("/var/log/Test/Result.txt","a") or die ("No created");
    for ($i=0, $x=count($fields); $i < $x; $i++){
      fputs($file, "$fields[$i]\n");
      fclose($file);
    }
  }
}
else {
echo "There is not identifier \n";
}
MysqL_close($con);
?>

Bscript.sh

#!/bin/bash
C=`grep -oPa '[Cc]=[^\s]+' /var/log/Test/vars.txt|cut -d= -f2|sed -e 's/-//'`
echo -e "Identifier: $C"
`PHP -f /root/Ascript.PHP $C`

当我从cli执行时:

[me]# PHP -f Ascript.PHP 1234567890

这里没有问题!

但是如果我执行:

[我]#./ Bscript.sh

(Bscript有755个权限)
我明白了:

Identifier: 1234567890
./Bscript.sh: line 4: 1234567890: command not found

即使我直接在我的Bscript.sh中写入值

...
`PHP -f /root/Ascript.PHP 1234567890`

我犯了同样的错误.

解决方法:

问题是围绕该线的反击

PHP -f /root/Ascript.PHP $C

它们对shell意味着:“在两者之间执行命令,收集它的输出(仅限于stdout),然后用输出替换反引号及其间的所有内容.

由于该行上还有其他内容,输出(1234567890)被视为命令.只需删除反引号.

您可以通过预先添加回声来检查:

echo `PHP -f /root/Ascript.PHP $C`

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...