有两种方法可以运行
第一种方法是使用
第二种方法是首先运行chmod+x(UNIX/Linux环境),将该
下面我们来看看怎样编写
1.编写第一个CLI脚本
首先创建一个名为myfile.
#!/usr/local/bin/myfile.
再重申一次:如果在Windows平台,CLI脚本的第一行一定要写正确
#!C:\
这样,可以看到在命令行下信息已经打印出来,证明该CLI脚本已经成功运行。
2.从命令行上读取参数
如果想从命令行获取参数,CLI可以从$_SERVER['argc']和$_SERVER['argv'']取得参数的个数和值。我们再建立一个文件,名字为testargs.
#!C:\在命令行输入如下代码: C:\Users\John>testargs.
因为我们输入了一串单词,为“AlwaysTo Be Best”,脚本参数以空格分隔。因此,
$_SERVER["argc"]数组返回一个整型的数,代表从命令行上回车后一共输入了几个参数。
从上例的结果已经看出,要访问已经传入的参数值,需要从索引1开始。因为脚本本身的文件已经占用了索引0,即$_SERVER["argv"][0]。
3.处理I/O通道
输入输出(I/O)通道这个思想来源于UNIX系统,UNIX系统提供3个文件句柄,用以从一个应用程序及用户终端发送和接收数据。
我们可以把一个脚本的输出重定向到一个文件:
outputfile
如果是在UNIX系统下,也可以使用通道定向到另一个命令或应用程序中。例如:
在
(1)STDIN
STDIN全称为standardin或standard input,标准输入可以从终端取得任何数据。
格式:stdin(’
下面的例子是显示用户输入:
#!/usr/local/bin/
这段代码的工作原理与cat命令很相似,回转提供给它的所有输入。但是,这时它还不能接收参数。
STDIN是
#!/usr/local/bin/该脚本执行后将显示:你好!你叫什么名字(请输入):比如,输入Raymond之后,将显示:欢迎你Raymond
(2)STDOUT
STDOUT全称为standardout或standard output,标准输出可以直接输出到屏幕(也可以输出到其他程序,使用STDIN取得),如果在
格式:stdout(’
我们还可以使用
#!/usr/local/bin/输出结果如下:Hello World例如,echo和print命令打印到标准输出。#!/usr/local/bin/这将得到:Output #1.Output #2.Output #3.
说明:
#!/usr/local/bin/
以上代码将把
(3)STDERR
STDERR全称为standarderror,在默认情况下会直接发送至用户终端,当使用STDIN文件句柄从其他应用程序没有读取到数据时会生成一个“stdin.stderr”。
格式:stderr(’
下面的脚本表示如何把一行文本输出到错误流中。
#!/usr/local/bin/
4.后台运行CLI
如果正在运行一个进程,而且在退出账户时该进程还不会结束,即在系统后台或背景下运行,那么就可以使用nohup命令。该命令可以在退出账户之后继续运行相应的进程。
nohup在英文中就是不挂起的意思(nohang up)。该命令的一般形式为:
nohup –f scriptname.
使用nohup命令提交作业,在默认情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件。
nohup scriptname.log.txt &
这样,
tail-n50 -f log.txt
现在再来实现两个例子,第一个是每隔10分钟自动生成一个静态HTML文件,并一直执行下去。脚本代码如下:
#!/usr/local/bin/
保存并且退出vi编辑器,然后赋予genHTML.
#>chmod755 genHTML.
按回车键后将出现shell提示符。上面的提示就是说,所有命令执行的输出信息都会放到nohup.out文件中。
执行上面命令后,每隔10分钟就会在指定的目录生成指定的HTML文件,如article_111990120.html等文件。
如何终止CLI程序的后台运行呢?
可以使用kill命令来终止这个进程,终止进程之前要知道进程的PID号,即进程ID,我们使用ps命令:
www#ps PID TT STAT TIME COMMAND 561 v0 Is+ 0:00.00 /usr/libexec/getty Pc ttyv0 562v1 Is+ 0:00.00 /usr/libexec/getty Pc ttyv1 563 v2 Is+ 0:00.00 /usr/libexec/gettyPc ttyv2 564 v3 Is+ 0:00.00 /usr/libexec/getty Pc ttyv3 565 v4 Is+ 0:00.00/usr/libexec/getty Pc ttyv4 566 v5 Is+ 0:00.00 /usr/libexec/getty Pc ttyv5 567v6 Is+ 0:00.00 /usr/libexec/getty Pc ttyv6 568 v7 Is+ 0:00.00 /usr/libexec/gettyPc ttyv7 16180 p0 I 0:00.01 su 16181 p0 S 0:00.06 _su (csh) 16695 p0 R+ 0:00.00ps 16623 p0 S 0:00.06 /usr/local/bin/
刚才的
注意:上面例子必须运行在UNIX或者Linux系统中,如FreeBSD、RedhatLinux等,在Windows环境不支持nohup命令。
http://www.toutiao.com/i6339288396854198786/
http://www.toutiao.com/i6342250485050769922/
http://www.toutiao.com/i6341854300825715202/
http://www.toutiao.com/i6341522663323730434/
http://www.toutiao.com/i6340964656659579393/
http://www.toutiao.com/i6340769983185814017/
http://www.toutiao.com/i6340381556544111105/
http://www.toutiao.com/i6340008962368209410/
http://www.toutiao.com/i6339636556831130113/
http://www.toutiao.com/i6338968648522138114/
http://www.toutiao.com/i6338521135566553602/
http://www.toutiao.com/i6338178359737975298/