加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何将参数传递给ruby命令行脚本

发布时间:2020-12-17 02:56:05 所属栏目:百科 来源:网络整理
导读:我通过STDIN将脚本传递给 ruby.例如., $ruby EE puts "args: #{ARGV}" EEargs: []$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' E
我通过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上.

解决方法

像许多其他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"]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读