Heim  >  Artikel  >  Backend-Entwicklung  >  新方法:将PHP作为Shell脚本语言使用_PHP教程

新方法:将PHP作为Shell脚本语言使用_PHP教程

WBOY
WBOYOriginal
2016-07-13 17:30:44866Durchsuche


  我们都知道,php(做为现在的主流开发语言)是一种非常好的动态网页开发语言(速度飞快,开发周期短……)。但是只有很少数的人意识到php(做为现在的主流开发语言)也可以很好的作为编写Shell脚本的语言,当php(做为现在的主流开发语言)作为编写Shell脚本的语言时,他并没有Perl或者Bash那么强大,但是他却有着很好的优势,特别是对于我这种熟悉php(做为现在的主流开发语言)但是不怎么熟悉Perl的人。
  
  要使用php(做为现在的主流开发语言)作为Shell脚本语言,你必须将php(做为现在的主流开发语言)作为二进制的cgi(现在已经不多人在用了)编译,而不是apache(Unix平台最流行的WEB服务器平台)模式;编译成为二进制cgi(现在已经不多人在用了)模式运行的php(做为现在的主流开发语言)有一些安全性的问题,关于解决的方法可以参见php(做为现在的主流开发语言)手册(http://www.php(做为现在的主流开发语言).net)。
  
  一开始你可能会对于编写Shell脚本感到不适应,但是会慢慢好起来的:将php(做为现在的主流开发语言)作为一般的动态网页编写语言和作为Shell脚本语言的唯一不同就在于一个Shell脚本需要在第一行生命解释本脚本的程序路径:
  
  我们在php(做为现在的主流开发语言)执行文件后面加入了参数“-1”,这样子php(做为现在的主流开发语言)就不会输出HTTPHeader(如果仍需要作为Web的动态网页,那么你需要自己使用header函数输出HTTPHeader)。当然,在Shell脚本的里面你还是需要使用php(做为现在的主流开发语言)的开始和结束标记:
  
  (做为现在的主流开发语言) 代码 ?>
  现在让我们看一个例子,以便于更好的了解用php(做为现在的主流开发语言)作为Shell脚本语言的使用: (做为现在的主流开发语言)
  print("Hello, world!n");
  ?>
  上面这个程序会简单的输出“Hello, world!”到显示器上。
  
  一、传递Shell脚本运行参数给php(做为现在的主流开发语言)
  作为一个Shell脚本,经常会在运行程序时候加入一些参数,php(做为现在的主流开发语言)作为Shell脚本时有一个内嵌的数组“$argv”,使用“$argv”数组可以很方便的读取Shell脚本运行时候的参数(“$argv[1]”对应的是第一个参数,“$argv[2]”对应的是第二个参数,依此类推)。比如下面这个程序: #!/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的作用),然后会关闭文件指针,返回读取的信息。
  现在我们可以使用函数“read”将我们前面编写的程序1修改一下,使他更加具有“交互性”了: (做为现在的主流开发语言)
  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();

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/509136.htmlTechArticle我们都知道,php (做为现在的主流开发语言) 是一种非常好的动态网页开发语言(速度飞快,开发周期短……)。但是只有很少数的人意识到...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn