我有这样的代码:
public function shell($code) {
$code = preg_replace('/"/', '\\"', $code);
exec('bash -c "' . $code . '"', $result);
return $result;
}
当我打电话给shell("echo $0");
时,我会嘘声而不是bash,为什么?
答案 0 :(得分:3)
原始shell正在扩展doublequotes中的变量。要防止变量扩展,请使用单引号:
exec("bash -c '" . $code . "'", $result);