• php解释命令行的参数


    php cli模式下,可以用$argc, $argv来读取所有的参数以及个数,如:

    ghostwu@ghostwu:~/php/php1/1$ cat go1
    #!/usr/bin/php
    <?php
    
        echo '参数个数:' . $argc . PHP_EOL;
        echo '打印参数:' . PHP_EOL;
        print_r( $argv ) . PHP_EOL;

    给文件加上可执行权限:

    ghostwu@ghostwu:~/php/php1/1$ ls -l
    total 8
    -rwxrwxr-x 1 ghostwu ghostwu 337 4月  22 09:15 go
    -rw-rw-r-- 1 ghostwu ghostwu 126 4月  22 09:20 go1
    ghostwu@ghostwu:~/php/php1/1$ chmod a+x go1
    ghostwu@ghostwu:~/php/php1/1$ ls -l
    total 8
    -rwxrwxr-x 1 ghostwu ghostwu 337 4月  22 09:15 go
    -rwxrwxr-x 1 ghostwu ghostwu 126 4月  22 09:20 go1
    ghostwu@ghostwu:~/php/php1/1$ ./go1
    参数个数:1
    打印参数:
    Array
    (
        [0] => ./go1
    )
    ghostwu@ghostwu:~/php/php1/1$ ./go1 a b c
    参数个数:4
    打印参数:
    Array
    (
        [0] => ./go1
        [1] => a
        [2] => b
        [3] => c
    )

    如果想把go1这个文件,在操作系统任意目录下,都能执行,我们需要添加环境变量,我在家目录下面建立一个目录mybin,用来放自己开发的命令

    ghostwu@ghostwu:~/mybin$ tail -2 ~/.bashrc
    fi
    export PATH=~/mybin:$PATH
    ghostwu@ghostwu:~/mybin$ pwd
    /home/ghostwu/mybin
    ghostwu@ghostwu:~/mybin$ 
    ghostwu@ghostwu:~/mybin$ echo $PATH
    /home/ghostwu/mybin:/home/ghostwu/bin:/home/ghostwu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
    ghostwu@ghostwu:~/mybin$ 

    再次打印$PATH,已经加入进来了,这个时候把开发好的命令拷贝到 ~/mybin目录下,  以后在系统的任意目录都能执行go1

    ghostwu@ghostwu:~/mybin$ cp ~/php/php1/1/go1 .
    ghostwu@ghostwu:~/mybin$ ls -l
    total 8
    -rwxrwxr-x 1 ghostwu ghostwu 126 4月  22 09:44 go1
    ghostwu@ghostwu:~/mybin$ go1
    参数个数:1
    打印参数:
    Array
    (
        [0] => /home/ghostwu/mybin/go1
    )
    ghostwu@ghostwu:~/mybin$ cd /
    ghostwu@ghostwu:/$ go1
    参数个数:1
    打印参数:
    Array
    (
        [0] => /home/ghostwu/mybin/go1
    )
    ghostwu@ghostwu:/$ cd /tmp
    ghostwu@ghostwu:/tmp$ go1
    参数个数:1
    打印参数:
    Array
    (
        [0] => /home/ghostwu/mybin/go1
    )

    在Linux命令行下,很多的命令,或者说软件都有一个-v参数来显示版本号,这个功能怎么做?

    $res = '';
    if( $argc >= 2 ) $argv[1] == '-v' && $res = 'go version is 1.0';
        echo $res . PHP_EOL;

    是不是很简单,3行代码就搞定了

    ghostwu@ghostwu:~/mybin$ go -v
    go version is 1.0
    ghostwu@ghostwu:~/mybin$ ls -l
    total 8
    -rwxrwxr-x 1 ghostwu ghostwu 336 4月  22 09:49 go
    -rwxrwxr-x 1 ghostwu ghostwu 126 4月  22 09:44 go1
    ghostwu@ghostwu:~/mybin$ 
  • 相关阅读:
    我说AOP(面向切面编程)--藏在苹果里的五角星
    mysql workbench 一个‘愚蠢’的设计
    .Net MVC Json 日期格式
    es6 import
    asp.net mvc 模型绑定太糙淡了
    asp.net mvc 报错 CS1617: Invalid option ‘6’ for /langversion; must be ISO-1, ISO-2, 3, 4, 5 or Default
    撸代码时到底用var好还是强类型变量好
    iphone5 从ios7升级到最新9.2
    修复win7 只有IE64 能上网 其他浏览器及应用都无法联网
    使用Teleri 导出实体类数组到Excel
  • 原文地址:https://www.cnblogs.com/ghostwu/p/8905856.html
Copyright © 2020-2023  润新知