我试图将一个变量从php传递给bash,但我遇到了问题。
以下是 PHP 代码的摘要。
<?php
$shopidX = escapeshellarg('$shop_id');
exec("~/bin/notaproblem $shopidX");
<?
以下是 bash 中定义变量的位置。
shopidX=$1
现在变量不起作用。我尝试在bash脚本(e.x)中对变量进行硬编码
shopidX=89234796743682446811473645238461264123465243614537285417254237645712345768235472364536217481238431654187
它确实有效。 $shop_id
也是在PHP中100%定义的。有什么问题?
答案 0 :(得分:1)
错误的引语:
$shopidX = escapeshellarg('$shop_id');
^--------^
'
- 引号不插入变量:
$foo = 'bar;
echo '$foo'; // outputs $, f, o, o
echo "$foo"; // outputs b, a, r
您将$
,s
,h
等发送到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}