shell简介

在计算机科学中,Shell俗称壳(用来区别于核)。而我们常说的shell简单理解就是一个命令行界面,它使得用户能与操作系统的内核进行交互操作。

常见的shell环境有:MS-DOS、Bourne Shell(/usr/bin/sh或/bin/sh)、Bourne Again Shell(/bin/bash)、C Shell(/usr/bin/csh)、K Shell(/usr/bin/ksh)、Shell for Root(/sbin/sh)等等。

shell的脚本格式是固定的,如下:

1
2
3
#!/bin/sh
#comments
Your commands go here

第一行称之为shebang,符号#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。

有两种运行shell的方式:一种是将脚本作为sh的命令行参数,另一种是降脚本作为具有执行权限的可执行文件。

将shell作为命令行参数时的运行方式如下:

1
sh script.sh

如果将脚本作为sh的命令行参数来运行,那么脚本中的shebang行也就没什么用处了。

为了是shell脚本能够自己独立运行,需要具备可执行权限。要使脚本独立运行必须利用shebang行。它通过使用位于#!之后的解释器来运行脚本。至于脚本的可执行权限,可以通过chmod命令来设置:

1
chmod a+x script.sh

上面的chmod命令赋予所有用script.sh文件的可执行权限。那么这个脚本就可以作为可执行程序运行:

1
./script.sh

php-cli简介

用Shell编程可以灵活地解决大量重复任务,十分方便。但是,Shell的语法十分怪异,不容易记,如果现在熟悉的语言可以用来写shell那就好了——比如php——就可以快速开发Shell程序了。

于是php-cli就营运而生了,php-cli是php Command Line Interface的简称,如同它名字的意思,就是php在命令行运行的接口,区别于在Web服务器上运行的php环境(php-cgi, isapi等)。

也就是说,php不单可以写前台网页,它还可以用来写后台的程序。当然是跟php一模一样啦,因为它就是php嘛!只不过一些默认的参数与php-cgi不同,比如运行时间:php-cli默认运行时间是无穷,而网页php默认设置是30s。

codeigniter cli模式

让我们试一试:Hello World!

首先创建一个简单的控制器。使用你的文本编辑器,创建一个叫做 tools.php 的文件,并且输入如下代码:

1
2
3
4
5
6
7
8
9
<?php
class Tools extends CI_Controller {
 
  public function message($to 'World')
  {
    echo "Hello {$to}!".PHP_EOL;
  }
}
?>

然后将这个文件保存到你的 application/controllers/ 文件夹里。现在正常情况下你可以通过你网站的 URL 来访问它:

1
example.com/index.php/tools/message/to

除此之外,我们也可以在 Mac/Linux 中打开终端,或者在 Windows 下进入“运行”输入“cmd”,并进入我们的 CodeIgniter 项目的目录。

1
2
$ cd /path/to/project;
$ php index.php tools message

如果你跟这这一步步下来,你应该会看到 Hello World!。

1
$ php index.php tools message "John Smith"

这里我们像使用 URL 参数一样给它传递了一个参数。“John Smith”作为一个参数被传递了,并且输出也变成:Hello John Smith!。

****CodeIgniter使用cli模式运行,把php作为shell编程的更多相关文章

  1. php脚本cli 模式运行

    参考文章 http://rapheal.sinaapp.com/2013/11/20/php_zend_hello_world/ http://www.douban.com/note/33788568 ...

  2. Jmeter系列(40)- 详解 Jmeter CLI 模式

    如果你想从头学习Jmeter,可以看看这个系列的文章哦 https://www.cnblogs.com/poloyy/category/1746599.html 什么是 CLI 模式 CLI = Co ...

  3. 『动善时』JMeter基础 — 55、JMeter非GUI模式运行

    目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.怎样使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模 ...

  4. 『动善时』JMeter基础 — 55、使用非GUI模式运行JMeter(命令行模式)

    目录 1.JMeter的非GUI模式说明 2.为什么使用非GUI模式运行JMeter 3.使用非GUI模式运行JMeter (1)非GUI模式运行JMeter步骤 (2)其它参数说明 4.CLI模式运 ...

  5. 处理Codeigniter CLI模式无法读取通过Apache写入的文件缓存

    运行环境: Ubuntu 16.04 + PHP 5.6.40 + Apache/2.4.18 Codeigniter: 3.1.10 Codeigniter 3.1.10,缓存驱动方式是文件方式 遇 ...

  6. 获取当前PHP运行环境是否cli模式

    需要用到系统函数php_sapi_name() 或者 系统常量 PHP_SAPI,返回 cli 或 cli_server /* 判断当前的运行环境是否是cli模式 */ function is_cli ...

  7. ThinkPHP3.1.2 使用cli命令行模式运行

    ThinkPHP3.1.2 使用cli命令行模式运行 标签(空格分隔): php 前言 thinkphp3.1.2 需要使用cli方法运行脚本 折腾了一天才搞定 3.1.2的版本真的很古老 解决 增加 ...

  8. PHP CLI模式开发

    PHP CLI模式开发不需要任何一种Web服务器(包括Apache或MS IIS等),这样,CLI可以运行在各种场合.有两种方法可以运行PHP CLI脚本. 第一种方法是使用 # php /path/ ...

  9. php CLI 模式下的传参方法

    在CLI模式(命令行界面 Command Line Interface)下,传入参数有如下3种方法: 一. getopt函数(PHP 4 >= 4.3.0, PHP 5) getopt - 从命 ...

随机推荐

  1. [BZOJ2656][codevs1207][Zjoi2012]数列(sequence)

    [BZOJ2656][codevs1207][Zjoi2012]数列(sequence) 试题描述 小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式: 小白作为一个数学爱好者 ...

  2. event相关

    event.button 事件属性可返回一个整数,指示当事件被触发时哪个鼠标按键被点击. event.keyCode  事件属性可返回一个整数,指示当事件被触发时哪个键盘按键被点击. <scri ...

  3. Markdown入门教程

    Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用.看到这里请不要被「标记」.「语言」所迷惑,Markdown 的语法十分简单.常用的标记符号也不 ...

  4. 数据结构与算法实验题6.1 s_sin’s bonus byFZuer

    玩家从n 个点n-1 条边的图,从节点1 丢下一个小球,小球将由于重力作用向下落,而从小球所在点延伸出的每一条边有一个值pi 为小球通过该条边的概率(注意从同一个节点向下延伸的所有边的pi 的和可以小 ...

  5. 报错:No package erlang available

    问题 yum install erlang 报错:No package erlang available 同样的,如果我们在安装nginx的时候出现"No package nginx ava ...

  6. django 操作数据库--orm(object relation mapping)---models

    思想 django为使用一种新的方式,即:关系对象映射(Object Relational Mapping,简称ORM). PHP:activerecord Java:Hibernate C#:Ent ...

  7. centos 随意截屏

    yum install kdegraphics 菜单路径: applications(应用程序)/Graphics(图形图像)/KSnapshot

  8. PHP检测每一段代码执行时间

    <?php // 实例1 /** * @start time */ function proStartTime() { global $startTime; $mtime1 = explode( ...

  9. EOS/普元:概述:中国IT业的悲哀

    公司引入了普元的EOS作为公司的基础架构平台,今后的所有项目将逐步向EOS的迁移,但对EOS的研究又让我不得不说出以下话: 1.EOS确实够简单,但未免简单过了头:从语言层面看EOS 因为EOS将成为 ...

  10. POJ 1321

    http://poj.org/problem?id=1321 一道深搜的题目,和那个POJ3740有点相类似. 也是到了现在我才知道原来深搜也有几种套路的,以前我的都是用队列来做,那个是不需要记住什么 ...