[英]How to pass parameters to ruby command line script
我通過STDIN
將腳本傳遞給ruby。 例如,
$ ruby << EE
> puts "args: #{ARGV}"
> EE
args: []
$ ruby << EE
> puts "args: #{ARGV}"
> EE 'arg1' 'arg2'
> EE
-:2: syntax error, unexpected tSTRING_BEG, expecting keyword_do or '{' or '('
EE 'arg1' 'arg2'
^
$ ruby 'arg1' 'arg2' << EE
> puts "args: #{ARGV}"
> EE
ruby: No such file or directory -- arg1 (LoadError)
$ ruby -- 'arg1' 'arg2' << EE
> puts "args: #{ARGV}"
> EE
ruby: No such file or directory -- arg1 (LoadError)
$ ruby -e << EE
> puts "args: #{ARGV}"
> EE
ruby: no code specified for -e (RuntimeError)
$
我不知道在這種情況下如何傳遞參數。 -e
選項不會獲取傳遞給STDIN
。 根據手冊頁 ,語法是:
ruby ... [--] [prog_file] [args]
但是我的prog_file
在STDIN
。
你可以傳遞這樣的參數
ruby << EE "" arg1 arg2
> puts ARGV.inspect
> EE
# ["arg1", "arg2"]
""
用於ruby文件路徑,或者在這種情況下為空。
像許多其他Unix實用程序一樣, ruby
識別-
作為STDIN的特殊文件名:
$ echo "p ARGV" | ruby - foo bar
["foo", "bar"]
要么:
$ ruby - foo bar << EE
> p ARGV
> EE
["foo", "bar"]
或:(按控制 D結束輸入)
$ ruby - foo bar
p ARGV
["foo", "bar"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.