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/$ ls -l
total
-rwxrwxr-x ghostwu ghostwu 4月 : go
-rw-rw-r-- ghostwu ghostwu 4月 : go1
ghostwu@ghostwu:~/php/php1/$ chmod a+x go1
ghostwu@ghostwu:~/php/php1/$ ls -l
total
-rwxrwxr-x ghostwu ghostwu 4月 : go
-rwxrwxr-x ghostwu ghostwu 4月 : go1
ghostwu@ghostwu:~/php/php1/$ ./go1
参数个数:
打印参数:
Array
(
[] => ./go1
)
ghostwu@ghostwu:~/php/php1/$ ./go1 a b c
参数个数:
打印参数:
Array
(
[] => ./go1
[] => a
[] => b
[] => c
)

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

ghostwu@ghostwu:~/mybin$ tail - ~/.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//go1 .
ghostwu@ghostwu:~/mybin$ ls -l
total
-rwxrwxr-x ghostwu ghostwu 4月 : go1
ghostwu@ghostwu:~/mybin$ go1
参数个数:
打印参数:
Array
(
[] => /home/ghostwu/mybin/go1
)
ghostwu@ghostwu:~/mybin$ cd /
ghostwu@ghostwu:/$ go1
参数个数:
打印参数:
Array
(
[] => /home/ghostwu/mybin/go1
)
ghostwu@ghostwu:/$ cd /tmp
ghostwu@ghostwu:/tmp$ go1
参数个数:
打印参数:
Array
(
[] => /home/ghostwu/mybin/go1
)

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

$res = '';
if( $argc >= ) $argv[] == '-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
-rwxrwxr-x ghostwu ghostwu 4月 : go
-rwxrwxr-x ghostwu ghostwu 4月 : go1
ghostwu@ghostwu:~/mybin$

php解释命令行的参数的更多相关文章

  1. mysql命令行各个参数解释

    mysql命令行各个参数解释 http://blog.51yip.com/mysql/1056.html Usage: mysql [OPTIONS] [database]   //命令方式 -?, ...

  2. 在VS中向命令行添加参数的方法

    在VS中向命令行添加参数的方法 在VS中向命令行添加参数,即向main()函数传递参数的方法: 右键单击要 添加参数的工程-->属性-->配置属性-->调试,在右侧“命令参数”栏输入 ...

  3. Shell Scipt 命令行带参数,输出log

    命令行带参数,以及字符串参数放到ssh命令里可以这么放: #!/bin/bash        这行保证运行bash可以这样: ./data.sh if [ $# != 4 ]; then echo ...

  4. 记录一个 spring cloud 配置中心的坑,命令行端口参数无效,被覆盖,编码集问题无法读取文件等.

    spring cloud 配置中心 结合GIT , 可以运行时更新配置文件.发送指令让应用重新读取配置文件. 最近在测试服务器实现了一套,结果CPU 实用率暴增,使用docker compose启动 ...

  5. 命令行传递参数并排序 AS实现加法

    题目:从命令行输入参数并进行排序 1.实验准备 Integer提供了能在 int 类型和 String 类型之间互相转换的方法,还提供了处理 int 类型时非常有用的其他一些常量和方法. static ...

  6. 【VS工程设置】 编译动态库,命令行添加参数,不使用预编译头,指定该项目链接 哪种 运行库

    编译动态库 注意: 动态库: [目标文件扩展] => .dll + [配置类型] => 动态库(.dll) 静态库: [目标文件扩展] => .lib + [ 配置类型]=> ...

  7. FFmpeg命令行map参数选择音视频流

    FFmpeg命令行map参数选择音视频流 介绍 -map参数告诉ffmpeg要从输入源中选择/拷贝哪个stream流到输出,可以从输入源中选择多个音视频流作为输出. 不加-map参数,ffmpeg默认 ...

  8. python命令行获取参数

    python命令行获取参数 import sys # python获取参数 input_file = sys.argv[1] output_file = sys.argv[2] print(input ...

  9. spring boot 项目打包后无法通过命令行传入参数

    java -jar .\tk-provider.jar --spring.profiles.active=test 本想用测试环境的配置文件运行项目可项目启动时一直是使用dev配置文件运行. java ...

随机推荐

  1. springboot2 生产部署注意事项【持续更新】

    注意事项1. 去除不需要的 jar 开发工具 jar :springs-boot-devtools2. 监控一定要做好权限制或者去除 控制 jar :spring-boot-starter-actua ...

  2. Java虚拟机7:垃圾收集(GC)-2(并行和并发的区别)

    1.并发编程下 这两个名词都是并发编程中的概念,在并发编程的模型下的定义: 并发:是在同一个cpu上同时(不是真正的同时,而是看来是同时,因为cpu要在多个程序间切换)运行多个程序. 并行:是多个或同 ...

  3. 尝试利用slmail的漏洞来getshell

    作者:Joe   本文属于Arctic shell原创内容计划文章,转载请注明原文地址! 二进制,计算机才可以理解的低级语言,简单来说它是一种信号,用电信号为例,0就是断电,而1就是有电,这样子010 ...

  4. @JsonInclude、@JsonFormat、@DateTimeFormat注解的使用

    @JsonInclude(value=Include.NON_NULL) :用在实体类的方法类的头上  作用是实体类的参数查询到的为null的不显示 @DateTimeFormat:用于接收 前端传的 ...

  5. vscode 学习笔记 —— 重构

    一.vscode 自带 1.提取变量 2.提取方法 上面都是通过选中文本后出现的小灯泡操作的: 3.全局替换(多个文件中的)某个变量 选中变量按 F2,输入完成后按回车 二.vscode 插件 js- ...

  6. 微信小程序自定义组件的使用以及调用自定义组件中的方法

    在写小程序的时候,有时候页面的内容过多,逻辑比较复杂,如果全部都写在一个页面的话,会比较繁杂,代码可读性比较差,也不易于后期代码维护,这时候可以把里面某部分功能抽出来,单独封装为一个组件,也就是通常说 ...

  7. 剑指offer五之用两个栈实现队列

    一.题目 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 二.思路 1.Push操作:将数据直接压入stack1即可 2.Pop操作:将stack1中的数据全部弹 ...

  8. 解决Maven的Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart

    eclipse配置好了Maven,创建maven-archetype-quickstart项目报错如下: Could not resolve archetype org.apache.maven.ar ...

  9. qtcreator_process_stub中文输出乱码

    使用qt运行程序输出中文,全都变成了□,让人很头疼,百度了很久,找了一些解决方案都是: 用vim打开x11-common,在控制台输入 vim /etc/X11/Xresources/x11-comm ...

  10. Error:fatal: Not a git repository (or any of the parent directories): .git

    在项目目录下执行git init命令. 大功告成.