将值从PHP传递给bash时的ERR_CACHE_MISS

时间:2014-03-09 23:22:19

标签: php bash

我正在尝试将一些值从PHP文件传递到BASH脚本。我收到了ERROR CACHE_MISS响应。 变量'coretown'打破了'Houston,TX'的价值。必须采用该格式才能使bash脚本正常工作。

证明变量正确的测试结果

WorkString531cdf6b8b3451.99781853 OutString531cdf6b8b3451.99781853 Houston, TX

执行bash脚本。

$errorTrap=shell_exec("./Find-Town.sh $workPath $outPath $coreTown");

Bash脚本:

#!/bin/bash
set -x
InFile="./zipcode.txt"
"$Work1"="$1"
"$OutFile"="$2"
"$InString"="$3"

echo "$1";
echo "$2";
echo "$3";

脚本中的'echo'返回:

WorkString531cdf6b8b3451.99781853 OutString531cdf6b8b3451.99781853 Houston,

注意缺少状态(TX)。如果我把'echo'$ 4“;'在那里它将显示'TX'。 其中一种语言是否将'coreTown'('Houston,TX')的内容作为数组处理?如果是这样,哪一个?我怎么解决它?我的谷歌搜索没有解决这个问题。

1 个答案:

答案 0 :(得分:0)

由于$coreTown包含一个空格,因此它被视为shell中的参数分隔符;你需要引用它或逃避空间。幸运的是,PHP有一个为您完成这项工作的功能:escapeshellarg

$workPathEsc = escapeshellarg($workPath);
$outPathEsc = escapeshellarg($outPath);
$coreTownEsc = escapeshellarg($coreTown);
$errorTap = shell_exec("./Find-Town.sh $workPathEsc $outPathEsc $coreTownEsc");