无法将变量从PHP传递给bash

时间:2014-11-25 20:58:31

标签: php bash variables

我试图将一个变量从php传递给bash,但我遇到了问题。

以下是 PHP 代码的摘要。

<?php
$shopidX = escapeshellarg('$shop_id');
exec("~/bin/notaproblem $shopidX");
<?

以下是 bash 中定义变量的位置。

shopidX=$1

现在变量不起作用。我尝试在bash脚本(e.x)中对变量进行硬编码

shopidX=89234796743682446811473645238461264123465243614537285417254237645712345768235472364536217481238431654187

它确实有效。 $shop_id也是在PHP中100%定义的。有什么问题?

2 个答案:

答案 0 :(得分:1)

错误的引语:

$shopidX = escapeshellarg('$shop_id');
                          ^--------^

' - 引号不插入变量:

$foo = 'bar;
echo '$foo'; // outputs $, f, o, o
echo "$foo"; // outputs b, a, r

您将$sh等发送到shell,而不是变量的内容。

事实上,你不需要全部引用

$shopidX = escapeshellarg($shop_id);

答案 1 :(得分:0)

HTML code:

<html>
<form>
<input name="name">
</form>
</html>

PHP代码:

<?php 
$name = $_POST['name'];
$output = shell_exec("C:/xampp/folder/scriptname.sh $name");
?>

Shell脚本:

#!/bin/bash -e
name=$1
echo name=${name:-$1}