如何将参数传递给 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
的内容。根据man page,语法为:
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"]
或:(按controlD结束输入)
$ ruby - foo bar
p ARGV
["foo", "bar"]
我通过 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
的内容。根据man page,语法为:
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"]
或:(按controlD结束输入)
$ ruby - foo bar
p ARGV
["foo", "bar"]