在使用ruby脚本时, 经常需要用到在参数中给出文件名,然后再脚本中可以处理该文件的功能,或者说从STDIN获取输入,然后处理得到某个结果。 而ruby为开发者处理类似的问题提供了一个很好的解决方法 --- ARGF
“ARGF is a stream designed for use in scripts that process files given as command-line arguments or passed in via STDIN.”
ARGF
ARGF.each { |line|
puts line
}
上面就是根据参数,找到文件,打印出文件内容所需的全部代码。
该脚本甚至可以接受多个文件名参数,按顺序一个一个的处理文件。
另外,该代码还有一个附赠的语法糖,如果没有给参数,则默认等待STDIN的输入,效果如下:
ARGV
在运行ruby脚本的时候,所有的参数会以Array的形式保存到ARGV中。ARGF则会根据ARGV中的值一个一个的处理,每处理一个就从ARGV中移除一个,直到处理完所有的值。
puts ARGV.inspect
ARGF.each { |line|
puts line
puts ARGV.inspect
}
有了这层理解,就可以很容易的为脚本加一些option,然后从ARGV中取出,根据option去做特殊的处理。
- 大小: 12.8 KB
- 大小: 12.8 KB
- 大小: 14.1 KB
- 大小: 26.6 KB
- 大小: 40.1 KB
分享到:
相关推荐
`sys.argv` 是 Python 标准库中的一个变量,它是一个列表,包含了运行 Python 脚本时在命令行中传递的所有参数。当你在命令行中执行一个 Python 程序时,`sys.argv[0]` 总是表示脚本的名称,而 `sys.argv[1]` 及其...
首先,Ruby的面向对象特性是其核心之一。在Ruby中,一切都是对象,包括基本数据类型如数字、字符串和布尔值。例如,当你在Ruby中写下"hello",它实际上是一个String对象,你可以调用方法在它上面操作,如`"hello"....
在C语言和C++编程中,`argc`和`argv`是两个非常基础且重要的概念,它们用于在程序启动时接收命令行参数。当你在命令行界面运行一个程序,并向其传递参数时,这些参数会被程序通过`argc`和`argv`捕获。下面将详细解释...
Ruby中的`ARGV`数组可以捕获命令行传递的参数,而`gets`方法则用于读取用户输入的控制台数据。 1. **基础架构**: 创建一个Ruby CLI工具时,首先定义一个主入口文件,例如`bin/main.rb`。在这个文件中,我们可以...
此函数的结构和功能是程序员必须掌握的基础知识之一。下面将对这一主题进行深入解析,以帮助读者更好地理解和应用。 ### `int main(int argc, char *argv[])`函数详解 #### 函数原型与参数解释 `int main(int ...
### Ruby编程语言基础知识点概述 #### 一、书籍简介与背景 《Programming Ruby 1.9》是由Dave Thomas...该书通过清晰的讲解和丰富的示例,帮助读者掌握Ruby编程的核心概念和技术,是学习Ruby不可或缺的经典教材之一。
int _tmain(int argc, _TCHAR argv[]) int _tmain(int argc, _TCHAR argv[])
C语言编程宝点之XXXX main()主函数 每一C 程序都必须有一main()函数, 可以根据自己的爱好把它放在程序的某 个地方。有些程序员把它放在最前面, 而另一些程序员把它放在最后面, 无论放 在哪个地方, 以下几点说明都...
标题“ex_argv.rar_in”和描述“Index of current file in argv. Number of arguments in argv.”提到了一个关于命令行参数处理的概念,特别是涉及到C语言编程中的`argv`数组。在这个场景下,`argv`是程序启动时由...
### Ruby Notes for Professionals #### 知识点概览 本篇文档主要涵盖了Ruby语言的基础到进阶的关键概念和技术,旨在帮助读者快速上手并深入理解Ruby。内容包括Ruby语言的基本介绍、类型转换(Casting)、运算符、...
在vs中编写C++程序时,可以往主函数里传递两个参数:main(int argc,char *argv[])。主函数不能被其它函数调用,在window操作系统下调用者是。 测试程序如下所示: #include stdafx.h #include iostream using ...
五、ARGV和ARGF - ARGV:包含了命令行参数的数组,可以动态添加元素,如`ARGV 。 - ARGF:用于读取命令行参数指定的文件或标准输入,如`ARGF.gets`用于获取文件的下一行内容。 六、文件信息查询 Ruby提供了多种方法...
### 高性能网络编程——IO完成端口 #### 基本内容概述 本文档主要介绍了高性能网络编程中的一个重要技术——IO完成端口(IOCP)。该技术是Windows平台下的一种高级I/O机制,用于处理大量的并发I/O操作,特别适用于...
"int main(int argc,char argv[ ])" 在C语言中,main函数是程序的入口点,main函数的定义方式有多种,但最标准的写法是int main(int argc, char *argv[], char *env[]),其中argc、argv和env三个参数是必不可少的...
它是连接 Python 脚本与外部世界的桥梁之一,尤其在编写命令行工具或自动化脚本时非常有用。掌握好 `sys.argv[]` 的使用方法,能够极大地提高编程效率和脚本的灵活性。希望本文能够帮助初学者更好地理解和应用这一...
### Linux网络编程之IO复用循环服务器 #### 一、引言 在现代网络应用开发中,服务器的设计面临着越来越高的并发请求处理需求。传统的简单循环服务器每次只能处理一个客户端请求,这种方式显然无法满足高并发场景的...
**spm-argv** 是一个专为前端开发设计的开源库,它主要负责解析 SPM(可能是 Software Package Manager 或者 Semantic Package Manager 的缩写)命令行参数。在软件开发中,尤其是命令行工具的使用中,参数解析是必...
`sys` 是 Python 的标准库之一,提供了许多与解释器交互的功能,包括获取命令行参数。 #### 三、`argv` 的基本使用方法 1. **导入 `sys` 模块**: ```python import sys ``` 2. **访问 `argv`**: - `sys.argv...
1. **命令行参数处理**:Ruby的`OptionParser`库或`ARGV`全局数组可以帮助解析命令行参数,根据用户提供的选项进行相应操作。 2. **HTTP请求与解析**:为了与torrent搜索引擎交互,需要使用如`Net::HTTP`库发送HTTP...