background image

number_of_words=`wc -w *.txt`

echo $number_of_words

#result would be something like:

#165 readme.txt 388 results.txt 588 summary.txt

#and so on....

 

  在您的 PHP 

 

脚本中,您可以在 shell_exec() 中运行这个简单的命令,如清单 

2 所示,并获取想要的结果。这里假设在同一个目录下有一些文本文件。

 

  清单 2.   

在 shell_exec() 中运行相同的命令

<?php

$results = shell_exec('wc -w *.txt');

echo $results;

?>

 

在图 1 

 

中可以看到,获得的结果与从 shell 脚本得到的一样。这是因为 

shell_exec() 

 

允许您通过 shell 运行外部程序,然后以字符串的形式返回结果。

 

  图 1. 

 

通过 shell_exec() 

 

运行 shell 命令的结果

  注意,仅使用后撇号操作符也会得到相同的结果,如下所示。

 

  清单 3. 仅使用后撇号操作符

<?php

$results = `wc -w *.txt`;

echo $results;

?>

 

清单 4 给出了一种更加简单的方法。

 

清单 4. 更加简单的方法

<?php

echo `wc -w *.txt`;

?>

 

通过 UNIX 

 

命令行和 shell 脚本能够完成很多东西,知道这点很重要。例如,您可

 

以使用竖线将命令连接起来。您甚至可以使用操作符在其中创建 shell 脚本,并且仅调用 
shell 脚本(根据需要使用或不使用参数)。

 

  例如,如果您仅希望计算该目录下的前 5 个文本文件的单词数,那么可以使用

 

竖线 (|)   

将 wc   

和 head 

 

命令连接起来。另外,您还可以将输出结果放到 pre 标记内部,

 

让它能够更美观地呈现在 Web 浏览器中,如下所示。

 

  清单 5. 

 

更加复杂的 shell 命令

<?php

$results = shell_exec('wc -w *.txt | head -5');