澳门新浦京app下载将PHP作为Shell脚本语言使用_php基础_脚本之家

--塞尔维亚语原版的书文:达雷尔 Brogdon,发表于 )
只怕过两人都想过使用PHP编写一些按期发信之类的次第,不过却从未办法定期实行PHP;二遍去PHPBuilder的时候,开掘了这一篇散文,于是想给大家翻译一下,希望对我们有用。首次翻译随笔,不佳请多多原谅。

我们都驾驭,PHP是一种十二分好的动态网页开拓语言。然而唯有比非常少数的人察觉到PHP也得以很好的作为编写制定Shell脚本的言语,当PHP作为编纂Shell脚本的语言时,他并不曾Perl只怕Bash那么刚劲,可是她却有着很好的优势,非常是对此自身这种熟稔PHP可是多少熟练Perl的人。
要使用PHP作为Shell脚本语言,你不得不将PHP作为二进制的CGI编写翻译,并不是Apache方式;编写翻译成为二进制CGI格局运作的PHP有一对安全性的标题,关于消除的不二法门能够仰慕PHP手册。
一始发你大概会对于编写Shell脚本感到不适应,不过会日趋好起来的:将PHP作为经常的动态网页编写语言和充任Shell脚本语言的独步天下分化就在于贰个Shell脚本须要在第一行生命疏解本脚本的顺序路径:
我们在PHP实践文书前边参与了参数“-1”,那样子PHP就不会输出HTTPHeader(假如仍急需用作Web的动态网页,那么你须要团结行使header函数输出HTTPHeader)。当然,在Shell脚本的内部你要么须求动用PHP的起始和得了标识:

 在 linux下,能够运用crontab +
php教程的方法:

我们都知晓,PHP是一种非常好的动态网页开辟语言。但是唯有超级少数的人意识到PHP也能够很好的充作编纂Shell脚本的语言,当PHP作为编写制定Shell脚本的言语时,他并未Perl恐怕Bash那么刚劲,可是他却有着很好的优势,极其是对此我这种熟知PHP可是某个熟谙Perl的人。
要使用PHP作为Shell脚本语言,你必需将PHP作为二进制的CGI编写翻译,并非Apache格局;编写翻译成为二进制CGI格局运维的PHP有部分安全性的主题素材,关于解决的法子能够景仰PHP手册。
一发端你可能会对此编写Shell脚本感到不适于,但是会日渐好起来的:将PHP作为日常的动态网页编写语言和充作Shell脚本语言的独一分化就在于三个Shell脚本须要在率先行生命疏解本脚本的程序路线:
#!/usr/local/bin/php -q
大家在PHP实行文书前面参预了参数“-1”,那样子PHP就不会输出HTTPHeader。当然,在Shell脚本的在那之中你还是需求接收PHP的初步和告竣标识:
?php 代码 ?
今后让我们看叁个例子,以便于越来越好的询问用PHP作为Shell脚本语言的使用:
#!/usr/local/bin/php -q ?php print(“Hello, world!”卡塔尔; ?
下面这一个顺序会轻巧的输出“Hello, world!”到荧屏上。

明日让大家看五个例证,以便于越来越好的打听用PHP作为Shell脚本语言的运用:

  1、使用crontab –e编辑按时职务

一、传递Shell脚本运转参数给PHP:
作为三个Shell脚本,经常会在运作程序时候步入一些参数,PHP作为Shell脚本时有叁个内嵌的数组“$argv”,使用“$argv”数组能够很有益于的读取Shell脚本运营时候的参数。举个例子下边那个程序:
#!/usr/local/bin/php -q ?php $first_name = $argv[1]; $last_name =
$argv[2]; printf(“Hello, %s %s! How are you today?”, $first_name,
$last_name卡塔尔国; ?
上边的代码在运作的时候供给三个参数,分别是姓和名,举例那样子运转:
[dbrogdon@artemis dbrogdon]$ scriptname.ph 达雷尔 Brogdon
Shell脚本在显示屏上边会输出: Hello, Darrell Brogdon! How are you
today? [dbrogdon@artemis dbrogdon]$
在PHP作为动态网页编写语言的时候也蕴藏“$argv”那一个数组,可是和这里有部分例外:当PHP作为Shell脚本语言的时候“$argv[0]”对应的是本子的文本名,而当用于动态网页编写的时候,“$argv[1]”对应的是QueryString的首先个参数。

复制代码 代码如下:

  内容为:

二、编写二个全部人机联作式的Shell脚本:
就算一个Shell脚本仅仅是和煦运维,失去了人机联作性,那么也未有何样意思了。当PHP用于Shell脚本的编写的时候,怎么读取客户输入的消息吗?非常不幸的是PHP本身未有读取客商输入消息的函数大概措施,然则大家能够一见倾心别的语言编写贰个读取客户输入音讯的函数“read”:
?php function read(卡塔尔国 { $fp = fopen(/dev/stdin, r卡塔尔国; $input = fgets($fp,
255卡塔尔; fclose($fp卡塔尔; return $input; } ?
须要在意的是地方这几个函数只可以用于Unix系统。上边的函数会张开一个文书指针,然后读取二个不当先255字节的行,然后会停业文件指针,重临读取的新闻。
今后大家能够利用函数“read”将大家前边编写的主次1改换一下,使她尤其具有“交互作用性”了:
#!/usr/local/bin/php -q ?php function read() { $fp = fopen(/dev/stdin,
r); $input = fgets($fp, 255); fclose($fp); return $input; } print(“What
is your first name? “); $first_name = read(); print(“What is your last
name? “); $last_name = read(); print(“Hello, $first_name $last_name!
Nice to meet you!”State of Qatar; ?
将地点的次序保存下去,运维一下,你或然会看出一件预料之外的业务:末了一行的输入形成了三行!那是因为“read”函数再次回到的消息还富含了顾客每一行的结尾换行符“”,保留到了姓和名中,要去掉结尾的换行符,须要把“read”函数改革一下:
?php function read(卡塔尔(قطر‎ { $fp = fopen(/dev/stdin, rState of Qatar; $input = fgets($fp,
255卡塔尔(قطر‎; fclose($fp卡塔尔国; $input = chop($input卡塔尔国; // 去除尾巴部分空白 return $input;
} ?

上边那几个顺序会轻易的出口“Hello, world!”到显示屏上。

  xx:xx:xx 实行多少个test.php文件

三、在任何语言编写的Shell脚本中带有PHP编写的Shell脚本:
有时候大家或者须要在此外语言编写的Shell脚本中蕴藏PHP编写的Shell脚本。其实特别简单,上边是四个简洁明了的例子:
#!/bin/bash echo This is the Bash section of the code.

一、传递Shell脚本运维参数给PHP:
作为三个Shell脚本,平常会在运路程序时候投入一些参数,PHP作为Shell脚本时有四个内嵌的数组“$argv”,使用“$argv”数组能够很有益的读取Shell脚本运维时候的参数(“$argv[1]”对应的是第二个参数,“$argv[2]”对应的是第四个参数,依此类推)。比如上边那些程序:
复制代码 代码如下:#!/usr/local/bin/php
-q

  2、php文件必需在文件头一行,加上解释器路线(就象perl做的那么State of Qatar

/usr/local/bin/php -q EOF ?php print(“This is the PHP section of the
code”卡塔尔; ? EOF
其实正是调用PHP来分析上边包车型大巴代码,然后输出;那么,再试试下边包车型地铁代码:
#!/bin/bash echo This is the Bash section of the code.

地方的代码在运转的时候须要五个参数,分别是姓和名,比如那样子运维:
[dbrogdon@artemis dbrogdon]$ scriptname.ph 达雷尔 Brogdon
Shell脚本在显示屏上边会输出: Hello, 达雷尔 Brogdon! How are you today?
[dbrogdon@artemis dbrogdon]$
在PHP作为动态网页编写语言的时候也隐含“$argv”这几个数组,可是和这里有部分不如:当PHP作为Shell脚本语言的时候“$argv[0]”对应的是本子的文本名,而当用于动态网页编写的时候,“$argv[1]”对应的是QueryString的第贰个参数。

  #!/usr/local/bin/php

/usr/local/bin/php -q EOF ?php $myVar = PHP; print(“This is the $myVar
section of the code”卡塔尔(قطر‎; ? EOF
能够见见四回的代码独一的不等正是第二遍选取了一个变量“$myVar”,试试运转,PHP竟然给出出错的新闻:“Parse
error: parse error in – on line
2”!这是因为Bash中的变量也是“$myVar”,而Bash剖析器先将变量给替换掉了,要想缓和那几个标题,你供给在种种PHP的变量后面加上“”转义符,那么刚才的代码改善如下:
#!/bin/bash echo This is the Bash section of the code.

二、编写一个全部人机联作式的Shell脚本:
假设贰个Shell脚本仅仅是投机械运输维,失去了交互作用性,那么也未曾什么看头了。当PHP用于Shell脚本的编辑撰写的时候,怎么读取客户输入的信息呢?很糟糕的是PHP自壬寅有读取客户输入消息的函数大概措施,不过大家可以效仿其余语言编写一个读取客商输入消息的函数“read”:

  php的进行须求apache的支撑,shell脚本的推行供给linux的支撑,而linux扶植定期运维有个别程序的效率

/usr/local/bin/php -q EOF ?php $myVar = PHP; print(“This is the $myVar
section of the code”); ? EOF

复制代码 代码如下:

  —————————————————————

好了,今后您能够用PHP编写你本人的Shell脚本了,希望你一切顺遂。即便有何难点,能够去依旧地点商讨。

亟待专一的是地点那一个函数只好用于Unix系统。上边的函数会展开多个文书指针,然后读取一个不当先255字节的行,然后会停业文件指针,重临读取的音讯。
未来我们能够运用函数“read”将我们前边编写的主次1改动一下,使她进一层具备“人机联作性”了:

  将php作为shell脚本语言应用(转发State of Qatar

复制代码 代码如下:

  –朝鲜语原文:darrell brogdon,发布于
)

将上边的次第保存下去,运营一下,你或然拜候到一件预料之外的事体:最终一行的输入变成了三行!那是因为“read”函数重返的新闻还满含了客商每一行的结尾换行符“n”,保留到了姓和名中,要去掉结尾的换行符,供给把“read”函数修改一下:

  或许过两人都想过使用php编写一些准时发信之类的次序,可是却未曾主意定期执行php;三遍去phpbuilder的时候,开采了这一篇小说,于是想给大家翻译一下(同不平时间做了一些改进State of Qatar,希望对大家有用。

复制代码 代码如下:

  ———————————————————————————-

三、在其他语言编写的Shell脚本中带有PHP编写的Shell脚本:
不时候我们兴许要求在任何语言编写的Shell脚本中蕴藏PHP编写的Shell脚本。其实极其轻易,上边是一个回顾的例子:
echo This is the Bash section of the code.

 

复制代码 代码如下:/usr/local/bin/php -q
<< EOF EOF

 

实际正是调用PHP来分析下边包车型客车代码,然后输出;那么,再试试上面包车型地铁代码: echo
This is the Bash section of the code.

  大家都精通,php是一种蛮好的动态网页开采语言(速度迅猛,开荒周期短……卡塔尔。可是只有相当少数的人开采到php也足以很好的作为编写制定shell脚本的言语,当php作为编纂shell脚本的语言时,他并不曾perl大概bash那么苍劲,然而她却有着很好的优势,特别是对此自身这种熟稔php可是多少熟练perl的人。

复制代码 代码如下:/usr/local/bin/php -q
<< EOF EOF

  要使用php作为shell脚本语言,你必须要将php作为二进制的cgi编写翻译,而不是apache格局;编写翻译成为二进制cgi形式运作的php有局地安全性的标题,关于消释的方法可以参见php手册(

能够看见几回的代码独一的例外正是第贰遍使用了四个变量“$myVar”,试试运营,PHP竟然给出出错的信息:“Parse
error: parse error in – on line
2”!那是因为Bash中的变量也是“$myVar”,而Bash深入深入分析器先将变量给替换掉了,要想解决那么些难点,你须要在各类PHP的变量前边加上“”转义符,那么刚才的代码改革如下:
echo This is the Bash section of the code.

  一先河你也许会对此编写shell脚本以为不适应,不过会逐步好起来的:将php作为平常的动态网页编写语言和当做shell脚本语言的独一不相同就在于五个shell脚本供给在率先行生命批注本脚本的程序路线:

复制代码 代码如下:/usr/local/bin/php -q
<< EOF EOF

  #!/usr/local/bin/php -q

好了,未来你能够用PHP编写你本身的Shell脚本了,希望您一切顺遂。如若有如何问题,能够去本站论坛上研究。

  大家在php实践文书前面参预了参数“-1”,那样子php就不会输出httpheader(即便仍急需用作web的动态网页,那么你须要和煦行使header函数输出httpheader卡塔尔。当然,在shell脚本的此中你依然要求采纳php的开首和得了标记:

法语版地址:

  现在让我们看叁个事例,以便于越来越好的刺探用php作为shell脚本语言的利用:

  #!/usr/local/bin/php -q

  print(“hello, world!n”);

  ?>

  上边那几个顺序会轻便的输出“hello, world!”到显示屏上。

  一、传递shell脚本运行参数给php:

  作为一个shell脚本,平常会在运行程序时候投入一些参数,php作为shell脚本时有三个内嵌的数组“$argv”,使用“$argv”数组能够很有益于的读取shell脚本运维时候的参数(“$argv[1]”对应的是率先个参数,“$argv[2]”对应的是第贰个参数,就那样类推State of Qatar。比方下边那个程序:

  #!/usr/local/bin/php -q

  $first_name = $argv[1];

  $last_name = $argv[2];

  printf(“hello, %s %s! how are you today?n”, $first_name,
$last_name);

  ?>

  下边包车型客车代码在运作的时候必要七个参数,分别是姓和名,比方那样子运转:

  [dbrogdon@artemis dbrogdon]$ scriptname.ph darrell brogdon

  shell脚本在显示器上面会输出:

  hello, darrell brogdon! how are you today?

  [dbrogdon@artemis dbrogdon]$

  在php作为动态网页编写语言的时候也含有“$argv”这么些数组,可是和这里有一部分莫衷一是:当php作为shell脚本语言的时候“$argv[0]”对应的是本子的公文名,而当用于动态网页编写的时候,“$argv[1]”对应的是querystring的第多个参数。

  二、编写一个具备交互作用式的shell脚本:

  若是一个shell脚本仅仅是投机械运输维,失去了交互作用性,那么也一向不怎么看头了。当php用于shell脚本的编写制定的时候,怎么读取客户输入的音信呢?很衰颓的是php本身未有读取顾客输入消息的函数或许措施,不过大家得以萧规曹随其余语言编写二个读取顾客输入新闻的函数“read”:

  function read() {

  $fp = fopen(‘/dev/stdin’,
‘r’);

  $input = fgets($fp, 255);

  fclose($fp);

  return $input;

  }

  ?>

  须求在意的是地方那一个函数只能用于unix系统(别的系统须求作相应的更正卡塔尔(قطر‎。下面的函数会展开二个文件指针,然后读取四个不当先255字节的行(正是fgets的效果State of Qatar,然后会破产文件指针,重回读取的音讯。

  以后大家得以采用函数“read”将大家前边编写的顺序1改造一下,使他愈发具备“交互作用性”了:

 

 

  #!/usr/local/bin/php -q

  function read() {

  $fp = fopen(‘/dev/stdin’, ‘r’);

  $input = fgets($fp, 255);

  fclose($fp);

  return $input;

  }

  print(“what is your first name? “);

  $first_name = read();

  print(“what is your last name? “);

  $last_name = read();

  print(“nhello, $first_name $last_name! nice to meet you!n”);

  ?>

  将地点的程序保存下去,运营一下,你可能拜望到一件预料之外的事体:末了一行的输入产生了三行!那是因为“read”函数重回的新闻还包含了客户每一行的结尾换行符“n”,保留到了姓和名中,要去掉结尾的换行符,必要把“read”函数修改一下:

  function read() {

  $fp = fopen(‘/dev/stdin’, ‘r’);

  $input = fgets($fp, 255);

  fclose($fp);

  $input = chop($input卡塔尔国; // 去除尾巴部分空白

  return $input;

  }

  ?>

  三、在其余语言编写的shell脚本中富含php编写的shell脚本:

  不经常候我们恐怕需求在其余语言编写的shell脚本中隐含php编写的shell脚本。其实特轻便,上面是叁个精简的例证:

  #!/bin/bash

  echo this is the bash section of the code.

  /usr/local/bin/php -q << eof

  print(“this is the php section of the coden”);

  ?>

  eof

  其实便是调用php来解析下边包车型客车代码,然后输出;那么,再试试下边包车型大巴代码:

  #!/bin/bash

  echo this is the bash section of the code.

  /usr/local/bin/php -q << eof

  $myvar = ‘php’;

  print(“this is the $myvar section of the coden”);

  ?>

 

 

  eof

  能够看到一回的代码独一的不等正是第二次使用了贰个变量“$myvar”,试试运营,php竟然给出出错的消息:“parse
error: parse error in – on line
2”!那是因为bash中的变量也是“$myvar”,而bash深入分析器先将变量给替换掉了,要想缓慢解决这一个主题材料,你要求在各样php的变量后面加上“”转义符,那么刚才的代码更改如下:

  #!/bin/bash

  echo this is the bash section of the code.

  /usr/local/bin/php -q << eof

  $myvar = ‘php’;

  print(“this is the $myvar section of the coden”);

  ?>

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图