大家好,我遇到了一个问题,让这个命令在按钮按下时工作,我需要搜索一个文件,并以逗号分隔的文本输出结果。PHP似乎不喜欢花括号,所以据我所知,我需要使用exec(),但无济于事,因为我收到的错误是“语法错误,意外的T_LNUMBER,期望的T_VARIABLE或'$'”我仍然是php的新手,如果答案很明显的话,很抱歉!任何信息都将是有用的,谢谢
<html>
<body>
<h1>Linux Command Test</h1>
<form method="POST" action="">
<input type="submit" id="submit" name="submit" value="Submit"/>
</form>
<?php
if (isset($_POST['submit']))
{
$output = exec('grep -i hello test.txt | awk -v OFS=, '{\$1=\$1;print}' > newtest.txt');
echo "<pre>$output</pre>";
}
?>
</body>
</html>发布于 2013-05-07 21:02:04
$output = exec('grep -i hello test.txt | awk -v OFS=, '{\$1=\$1;print}' > newtest.txt');应该是:
$output = exec('awk -v OFS=, \'/hello/i {$1=$1;print}\' test.txt > newtest.txt');您需要转义引号,否则它们将分隔PHP字符串。在PHP中,您不需要在单引号的字符串中转义$。如果您希望在awk变量中捕获输出,则不应将其重定向到文件。
而且不需要将grep传递给awk,因为awk具有内置的模式匹配。
发布于 2013-05-07 20:31:47
尝试转义$
grep -i hello test.txt | awk -v OFS=, '{\$1=\$1;print}' > newtest.txt发布于 2013-05-07 20:31:19
你可以在PHP中使用一堆函数来调用外部应用程序,exec(),system()等等:http://www.php.net/manual/en/ref.exec.php,但请记住,让你使用它们是由管理员决定的。在大多数共享主机上,这些功能都被禁用
https://stackoverflow.com/questions/16419070
复制相似问题