我正在尝试将一些值从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')的内容作为数组处理?如果是这样,哪一个?我怎么解决它?我的谷歌搜索没有解决这个问题。
答案 0 :(得分:0)
由于$coreTown
包含一个空格,因此它被视为shell中的参数分隔符;你需要引用它或逃避空间。幸运的是,PHP有一个为您完成这项工作的功能:escapeshellarg
。
$workPathEsc = escapeshellarg($workPath);
$outPathEsc = escapeshellarg($outPath);
$coreTownEsc = escapeshellarg($coreTown);
$errorTap = shell_exec("./Find-Town.sh $workPathEsc $outPathEsc $coreTownEsc");