perl作為linux系統(tǒng)命令行腳本的首選解釋語言的日子一去不復(fù)返了。今天,我們有了更多的選擇,包括python、ruby和php。如果你已經(jīng)為網(wǎng)站編寫php代碼,并熟諳這種語言,那么你會(huì)發(fā)現(xiàn),在命令行使用php的速度之快,效果之好令人驚奇。
在腳本中,任何腳本語言的一個(gè)最大功用是對(duì)文件進(jìn)行操作并獲取用戶輸入。php處理這些絲毫不比其它任何腳本語言遜色。
例如,利用php在腳本執(zhí)行期間處理讀取用戶提供輸入,使用:
#!/usr/bin/php
<?php
function read_input()
{
$fp = fopen("/dev/stdin", "r");
$input = trim(fgets($fp, 255));
fclose($fp);
return $input;
}
printf("please supply your name: ");
$name = read_input();
printf(" hello, $name. ");
?>
</code>
上面定義的read_input()函數(shù)將從stdin提取輸入,存儲(chǔ)于$input 變量中,整理所有引導(dǎo)的和尾隨的空白空間,然后返回。
同樣的原理還可以應(yīng)用于讀取和操作標(biāo)準(zhǔn)文件;記住,對(duì)于linux,stdin只是另一個(gè)文件而已(相應(yīng)地,上述例子中的opening /dev/stdin 也是這樣)。
#!/usr/bin/php
<?php
if (file_exists($argv[1]))
{
$file = $argv[1];
} else {
printf("error: file '$file' does not exist! ");
exit 1;
}
$data = file($file);
$c = 1;
foreach ($data as $line)
{
printf(sprintf("[%s]: %s", $c, $line));
$c++;
}
在上述例子中,php腳本將會(huì)讀取傳遞到命令行文件中的每一行,并緊隨當(dāng)前行數(shù)將其輸出。如果文件不存在,腳本會(huì)打印一個(gè)出錯(cuò)提示,并將返回代碼1并退出(1表示出錯(cuò);在正常運(yùn)行中,腳本會(huì)以返回代碼0退出)。file() 函數(shù)在這里使用,它讀取文件的每行,列成數(shù)組(在這個(gè)例子中,數(shù)組為$data),然后用于foreach()語句中,在數(shù)組中循環(huán),一次是文件中的一行。
php已經(jīng)不再嚴(yán)格拘泥于基于web的編程。我們可以將它輕松應(yīng)用于編寫命令行腳本,既靈活又快速。
同樣地,幾乎所有你能用web腳本進(jìn)行操作的,例如,數(shù)據(jù)庫操作,都可以輕松地應(yīng)用php的命令行腳本完成。
新聞熱點(diǎn)
疑難解答
圖片精選