php循环的结果没有传递给shell脚本

时间:2015-06-15 20:19:51

标签: php bash shell loops

我在php中有一个小的foreach循环,但结果不会传递给shell脚本。见下文:

$contents = file("$target_dir/$user.temp.txt");

foreach($contents as $line) {
    echo $line . "<br />";
    exec("sh read.sh $line >> tempfile");
}

echo语句工作得很好,并将数据显示到屏幕上。但是$ line的结果并没有使它成为shell脚本,但是当我用随机字符串替换$ line时它会。这是shell脚本:

#!/bin/bash
#test script
echo "test output: $1"

当尝试使用$ line调用shell脚本时,临时文件将被创建但是为空。我的所有权限都设置为777,调用脚本的组与文件夹的所有者相同。我已经回顾了关于php循环的其他帖子,但似乎找不到与我的问题完全匹配的任何内容。

提前感谢任何见解。

1 个答案:

答案 0 :(得分:1)

需要向$line添加单引号。

exec("sh read.sh '$line' >> tempfile");