我正在尝试将一些值从PHP文件传递到BASH脚本。我收到一个错误的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')的内容作为数组处理?如果是,是哪一个?Amd我怎么解决它?我在谷歌上的搜索并没有解决这个问题。
发布于 2014-03-10 07:34:57
由于$coreTown包含一个空格,因此它在shell中被视为参数分隔符;您需要用引号将其引起来或转义空格。幸运的是,PHP有一个函数可以做到这一点:escapeshellarg。
$workPathEsc = escapeshellarg($workPath);
$outPathEsc = escapeshellarg($outPath);
$coreTownEsc = escapeshellarg($coreTown);
$errorTap = shell_exec("./Find-Town.sh $workPathEsc $outPathEsc $coreTownEsc");https://stackoverflow.com/questions/22289600
复制相似问题