【发布时间】:2012-02-24 17:45:54
【问题描述】:
n00b 问题提醒! 这是问题所在: 我正在创建一个至少需要 3 个参数的 shell 脚本:一个字符串、一个行号和至少一个文件。
我编写了一个脚本,它可以接受正好 3 个参数,但我不知道如何处理多个文件名参数。
这是我的代码的相关部分(跳过写回文件等):
#!/usr/bin/env ruby
the_string = ARGV[0]
line_number = ARGV[1]
the_file = ARGV[2]
def insert_script(str, line_n, file)
f = file
s = str
ln = line_n.to_i
if (File.file? f)
read_in(f,ln,s)
else
puts "false"
end
end
def read_in(f,ln,s)
lines = File.readlines(f)
lines[ln] = s + "\n"
return lines
end
# run it
puts insert_script(the_string, line_number, the_file)
现在我知道编写一个遍历所有参数的块很容易:
ARGV.each do |a|
puts a
end
但我只需要循环从 ARGV[2](第一个文件名)到最后一个文件名的参数。
我知道必须 - 至少 - 至少有一种简单的方法可以做到这一点,但我现在看不出它是什么!
无论如何-如果有人可以向我指出教程或示例,我会非常高兴,我敢肯定那里有很多-但我似乎找不到它们。
谢谢
【问题讨论】:
-
大家的好答案!感谢大家。通常情况下,我理解或可以使用我在这里得到的许多答案 - 所以要么我变得更聪明,要么这是一个特别简单的问题,要么你们只是很好的解释者......或者这三者的组合!干杯,B
标签: ruby command-line arguments