我想在终端中编写一个命令,如$ tesseract -v
tesseract 3.04.01
leptonica-1.73
libgif 5.1.2 : libjpeg 8d (libjpeg-turbo 1.4.2) : libpng 1.2.54 : libtiff 4.0.6 : zlib 1.2.8 : libwebp 0.4.4 : libopenjp2 2.1.0
,解析命令,并获取字符串config.section.key
和"section"
。我想在我的函数中使用这两个键来搜索哈希。
有没有办法从终端解析命令来执行此操作?
答案 0 :(得分:2)
要执行终端命令,你可以在这里使用反引号或系统调用的一些例子,请记住这是所有伪代码,我不知道这是否会正确运行:
def create_file
`touch test.txt`
end
def cmd
system('ls')
end
def check_file
results = cmd
if results.include?('test.txt')
puts 'File exists.'
else
puts 'Creating file..'
create_file
end
end
现在,对于解析部分,根据您要执行的操作,您可以将信息保存到变量中,也可以使用正则表达式来提取信息。因此,如果您想要保存信息,请使用正则表达式提取数字:/\d+/
:results = cmd
..
我希望这能回答你的问题。
要拆分信息,您可以使用split
方法,例如:
def cmd
`prt_jobs`
end
def check_jobs
res = cmd
res.split(".")
end
这将按周期分割打印作业命令的结果,并将它们分成一个数组。我会在手机上向您展示更多信息,因此必须等待
答案 1 :(得分:1)
正如Tadman评论的那样,如果您愿意,可以使用String#split
方法将argv
分割为句点字符:
config, section, key, *rest = ARGF.argv.split('.')
处理解析命令行时的另一个好选择是Ruby标准库OptionParser
类。 OptionParser类不是手动重建所有的CLI解析,而是内置了更多。由此产生的脚本可以感觉更像Linux,并且对于之前使用过bash的人来说都很熟悉。