部分内容参考自
http://tieba.baidu.com/f?z=595442653&ct=335544320&lm=0&sc=0&rn=30&tn=baiduPostBrowser&word=%D6%B1%CF%DF%B5%C4%C3%D8%C3%DC&pn=30
这段时间想学一下有关于shell的编程,因为我觉得这样很酷的。但是,觉得那个linux下的shell用了实在是看着不顺眼,那语法感觉相当不合常理。于是到网上找资料,看到有人用php写shell的,自己最近也在集中精力搞php,又不想再去学另外一门语言了。就先试着用用,使用过程如下。
现确保你的usr/bin下有php这个可执行文件,因为我始apt-get安装的php,所以这个目录下本来就有这个文件的。
然后随便在哪个地方新建一个文件,名叫test.php,内容如下
#!/usr/bin/php
<?php
print("hello world\n");
?>
第一句话,貌似就是指定用什么解释起解释的,默认的话会用bash来解释,但是我们指定php来解释,怎么样,合情合理。
打开终端,进入test.php所在的目录,然后./test.php,就会看见hello world了,怎么样,很酷吧!
但是我们经常会传一些参数进去,那么这个时候可以用php本身就有的$argv数组来得到,这里的机制和c语言的一样,比如
#!/usr/bin/php
<?php
foreach($argv as $a)
{
print("$a\n");
}
?>
我在终端输入./test.php 1 2 3 4 5 6,结果就是
./test.php
1
2
3
4
5
6
我还看到有人写了一个关于c里面的scanf和c++的cin的等待用户输入的函数
function read() {
$fp = fopen('/dev/stdin', 'r');
$input = fgets($fp, 255);
fclose($fp);
return chop($input);
}
这里需要加上chop也就是java里面String的trim函数。因为你按回车得到的字符会带上换行符的。
生搬下来就是
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");