各种语言执行入口的传参方法

简介:

在操作系统中,执行程序时可以由系统传入参数,就是在执行的时候,附带上参数。比如:

1 ping www.kryptosx.info

后面跟着的网址就是ping的参数。

Linux和windows的shell都遵循这个参数传入方式。这里列一下各种语言的执行入口传参方法。主要分为两类,一种是有main函数的语言,一种是没有main函数的。

在执行命令的时候,linux系统会先对命令行进行分解通常是以空格分解,如果有双引号,双引号内的也是认为是一个参数,无论里面有无空格。

C类语言的执行入口传参:

C类语言包括C和C++语言,他们的传参方式一样。都是在main函数中。C/C++语言中的main函数可以携带参数,只是我们平常不用。

1 int main(int argc, char** argv)
2 int main(int argc, char* argv[])

argc  是指命令行输入参数的个数(以空白符分隔),程序名也是包含在内的。

argv  是一个指向字符串数组的指针。

c/c++main函数传参示例程序:

01 #include <stdio.h>
02 int main(int argc, char ** argv)
03 {
04     printf("argc: %d\n",argc);
05     int i;
06     for (i=0; i < argc; i++)
07         printf("argv[%d] is %s\n", i, argv[i]);
08     getchar();
09     return 0;
10 }

 c/c++main函数传参的执行:

1 play.exe a b c d "hello sir"
2 argc: 6
3 argv[0] is play.exe
4 argv[1] is a
5 argv[2] is b
6 argv[3] is c
7 argv[4] is d
8 argv[5] is hello sir

可以看出,传给argv的字符串中,argc是整个输入的命令被分解的段数(注意双引号)。

Shell脚本的执行入口传参:

shell脚本是没有main函数的,它是个解释性语言。但是我们也可以在运行时对其传参。相对C语言而言,更为简单。

shell是使用系统定义的位置变量。引用脚本参数时,可以使用$1到$9这9个变量。还有一个特殊点的变量是$*,它输出所有参数(不包括程序名)。

shell脚本传参的示例程序:

1 #!/bin/bash
2 echo "\$* is "$*
3 echo "\$0 is "$0
4 echo "\$1 is "$1
5 echo "\$2 is "$2
6 echo "\$3 is "$3
7 echo "\$4 is "$4

shell脚本传参示例的执行:

1 bash hello.sh 1 2 3 4
2 $* is 1 2 3 4
3 $0 is hello.sh
4 $1 is 1
5 $2 is 2
6 $3 is 3
7 $4 is 4

 Python脚本的执行入口传参:

Python是一个介于shell和C/C++之间的语言,它的执行入口传参有二者的特点。和shell一样python也是没有main函数的,但是python和c/c++类似有一个argv变量。python要传参还需要一个sys模块。

  • 需要模块:sys
  • 参数个数:len(sys.argv)
  • 脚本名: sys.argv[0]
  • 参数1: sys.argv[1]
  • 参数2: sys.argv[2]
  • ………..

python脚本传参示例:

1 #coding=utf-8
2 import sys
3 print "sys.argv[0] is ", sys.argv[0]
4 for in range(1len(sys.argv)):
5     print "sys.argv["+str(i)+"] is ", sys.argv[i]

 python脚本传参示例的执行:

1 python hello.py 2324 3 2 3 "sads sdaf"
2 sys.argv[0] is  hello.py
3 sys.argv[1] is  2324
4 sys.argv[2] is  3
5 sys.argv[3] is  2
6 sys.argv[4] is  3
7 sys.argv[5] is  sads sdaf

转载请注明:旅途@KryptosX » 各种语言执行入口的传参方法

目录
相关文章
|
JSON 前端开发 数据格式
四种常见的参数传递方式
四种参数传递方式
212 0
|
3月前
|
存储 小程序 JavaScript
小程序中页面传参的方式你都知道吗
小程序中页面传参的方式你都知道吗
51 0
|
4月前
|
前端开发
ThinkPHP6表单上传的数据获取的四种方式【请求对象调用,静态调用,助手函数调用,原生的get|post】
本文介绍了在ThinkPHP6中获取表单上传数据的四种方式:请求对象调用、静态调用(Facade)、助手函数调用以及原生的$_GET和$_POST数组。文章通过示例代码展示了每种方式的具体使用方法,并强调了在使用请求对象调用时引入正确的Request类的重要性。
|
6月前
|
开发框架 前端开发 JavaScript
在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数
在各种开发项目中使用公用类库的扩展方法,通过上下文方式快速调用处理函数
|
8月前
|
Python
入口函数和特定函数的区别
入口函数和特定函数的区别
|
8月前
|
JavaScript 前端开发
js函数:函数是JS的基本组成单元,用于封装代码块以实现特定功能。理解函数的定义、调用和参数传递方式非常重要。具体案例详解
js函数:函数是JS的基本组成单元,用于封装代码块以实现特定功能。理解函数的定义、调用和参数传递方式非常重要。具体案例详解
70 1
|
Dart 前端开发 JavaScript
dart中将方法当做参数传递时的注意事项
众所周知,Dart是一门面向对象的语言,比Java更纯粹,Dart中的方法也是对象,也有类型Function。这意味着方法可以被分配给对象,也可以当做参数传递给其他方法。
|
C++ 编译器 安全
|
编译器 C++
C++函数参数传递的三种方式
C++函数参数传递的三种方式
204 0