在批量运行脚本时,需要对脚本添加一些参数,针对这些参数,不同的计算给出了不同的方式。
总结SHELL脚本,Python的参数解析,R语言的批量运行方式以及脚本的参数。
命令行参数的形式
命令行参数的风格
Shell脚本的方式
1.shell脚本执行方式:exec(exec script.sh)、source(source script.sh)、fork(./script.sh)
2.传递参数方式
bash中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景。
01.直接处理,依次对$1,$2,...,$n进行解析,分别手工处理;
02.getopts来处理,单个字符选项的情况(如:-n 10 -f file.txt等选项);
03.getopt,可以处理单个字符选项,也可以处理长选项long-option(如:--prefix=/home等)
其中方式一中 $0表示脚本文件名。
第一个参数用$1表示,第二个参数$2表示,。。。以此类推。
另外一个在shell编程中经常用到 的是"$@ "这个代表所有的参数
Python方式
01.Python语言简单的解析 sys 模块 sys.argv
02.argparse是python用于解析命令行参数和选项的标准模块,用于解析命令行参数
命令行参数解析
参数类型:
定位参数,可选参数
互斥参数组
default - 不指定参数时的默认值,缺省参数
required - 可选参数是否可以省略 (仅针对可选参数)。
步骤
1.首先导入该模块;
import argparse
2.然后创建一个解析对象-并进行简单的描述;
parser = argparse.ArgumentParser()
3.然后向该对象中添加你要关注的命令行参数和选项,每一个add_argument方法对应一个你要关注的参数或选项;
parser.add_argument()
type:参数的类型,默认是字符串string类型,还有float、int等类型
action - 命令行遇到参数时的动作,默认值是 store
参数组
group = parse.add_mutually_exclusive_group(required=True)
4.最后调用parse_args()方法进行解析;
parser.parse_args()
R语言
01.批量运行脚本
命令行
R CMD BATCH 脚本文件名 输出文件名
Rscript 脚本文件名 参数
R界面
source
02.获得参数使用的函数 commandArgs(TRUE)
argv <- commandArgs(TRUE)
x <- as.numberic(argv[1])
y <- as.character(argv[2])
03.
文件是否存在以及是否有权限
执行权限
是否 #/usr/bin/Rscript 可以直接执行
04.赋予权限
Linux 下 chmod
其余语言
处理命令行参数是一个相似而又复杂的事情,为此,
C提供了getopt/getopt_long等函数
C++的boost提供了Options库
Java:程序开始于对函数main()的调用。
01.在这样做的时候,有两个参数被送给main(),
其中的一个描述了命令行参数的个数,通常称为argc;
另一个是命令行参数的数组,通常称为argv。
02.命令行的参数以空格隔开。
但是,若命令行的参数本身包含空格时,则该参数必须用一对双引号括起来