簡體   English   中英

如何將參數傳遞給ruby命令行腳本

[英]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_fileSTDIN

你可以傳遞這樣的參數

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM