Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby中的ARGV循环跳过if语句_Ruby_Argv - Fatal编程技术网

Ruby中的ARGV循环跳过if语句

Ruby中的ARGV循环跳过if语句,ruby,argv,Ruby,Argv,在我的脚本中,我使用ARGV stream获取命令行参数。有一段代码: ARGV.each do|a| item = JSON.parse(%x{curl -X GET https://puppetdb.ai:8081/pdb/query/v4/facts/#{a} --tlsv1 --interface x.x.x.x --cacert certificate.pem --cert certificate-pem.cer --key certificate-privkey.pem}) it

在我的脚本中,我使用ARGV stream获取命令行参数。有一段代码:

ARGV.each do|a|
item = JSON.parse(%x{curl -X GET https://puppetdb.ai:8081/pdb/query/v4/facts/#{a} --tlsv1 --interface x.x.x.x --cacert certificate.pem --cert certificate-pem.cer --key certificate-privkey.pem})
  item.each do |h|
     arr << {"name" => h['certname'], "#{a}" => h['value'], "environment" => h['environment']}
  end
end
ARGV.each do|a|
item=JSON.parse(%x{curl-x GEThttps://puppetdb.ai:8081/pdb/query/v4/facts/#{a} --tlsv1--interface x.x.x.x--cacert certificate.pem--cert certificate-pem.cer--key certificate privkey.pem})
项目.每个do | h|
arrh['certname'],“#{a}”=>h['value'],“environment”=>h['environment']}
结束
结束
通过curl,我使用puppetdbapi获得了一些数据。这一切都很好,但我想添加一些if语句来打印脚本帮助。看起来是这样的:

ARGV.each do|a|
  if (a == "help")
    puts "this is help 4 U"
  else 
    item = JSON.parse(%x{curl -X GET https://puppetdb.ai:8081/pdb/query/v4/facts/#{a} --tlsv1 --interface x.x.x.x --cacert certificate.pem --cert certificate-pem.cer --key certificate-privkey.pem})
      item.each do |h|
         arr << {"name" => h['certname'], "#{a}" => h['value'], "environment" => h['environment']}
      end
  end
end
ARGV.each do|a|
如果(a==“帮助”)
将“这是帮助4 U”
其他的
item=JSON.parse(%x{curl-x GEThttps://puppetdb.ai:8081/pdb/query/v4/facts/#{a} --tlsv1--interface x.x.x.x--cacert certificate.pem--cert certificate-pem.cer--key certificate privkey.pem})
项目.每个do | h|
arrh['certname'],“#{a}”=>h['value'],“environment”=>h['environment']}
结束
结束
结束

但是脚本忽略“help”并将“help”参数填充到curl中。你能帮我吗?

试试使用
.strip
并查看
Ruby


当您遍历Ruby命令提供的每个参数时,可以使用这些参数来清理输入。最好只使用
ARGV
Array
作为
Array
并查看,以查看在使用Array数据类型(即ARGV的格式)时在Ruby中可用的方法。。例如使用
.include?(“帮助”)
搜索子字符串。早期使用这些方法文档对于理解Ruby提供的工具至关重要

ruby a.rb帮助
适合我,打印
“这是帮助4 U”
字符串并立即退出。旁注:
ARGV
不是一个流。
ARGV
是一个数组,
ARGF
是一个流。检查您是否出于某种原因有一些空格。如果您在Ruby中使用命令行参数,那么这是一个很好的开始。它使添加
-x
-extra
类型选项变得简单。请注意,不要在外部使用
curl
并通过
%x{…}
吸入内容,只需
要求使用“打开uri”
,使用和“打开(”)在我看来,不断地告诉OP阅读文档并不是一个答案,而是一个评论。我不仅仅说阅读文档,我明确地说了在文档中回答问题的内容,然后解释我是如何得到答案的。因为这在学习时除了答案之外很重要,就像教一个人钓鱼一样。我永远不会告诉别人去阅读文档,那是浪费我们两个人的时间,但我确实认为引用我的资料是值得的,这是我觉得我所做的。感谢Breake_historian,include?works,但我会尝试使用tadman建议的OptPass,它看起来更有用。@Breake_historian在编码论坛上的回答通常涉及代码。你的大多数回答似乎只是暗示了在哪里可以找到答案,但从来没有真正回答过这个问题。(这不是这个答案的具体内容,正如所显示的,我可能不是唯一一个有这种感觉的人)因为我所得到的只是很高的声誉,人们对我的回答都很关注,只留下批评和更多,就像大多数女性一样,我在这里不太受欢迎。我将把我对开源的贡献限制为对github和gitlab的代码贡献。@mia102aim:Optsparse是一种更好的处理方法。