You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Ruby Gem 'slop'返回Shell Glob后的文件名数组?

解决Slop Gem接收Shell Glob文件列表的问题

问题核心是Shell会先对foo_*进行路径展开,实际传给Ruby程序的参数是-f foo_1 foo_2 foo_3,但你当前的Slop配置只读取了-f后的第一个参数。

修改代码,给array选项添加multiple: true配置,让Slop识别该选项可接收多个后续参数(直到遇到下一个以-开头的选项):

require 'slop'

opts = Slop.parse do |o|
  o.array '-f', '--files', 'List of files', multiple: true
end

files = opts[:files]

puts "Files to process: #{files}"

现在执行myprog.rb -f foo_*,就能得到正确的数组["foo_1", "foo_2", "foo_3"]。

补充说明:

  • delimiter: ' '用于拆分单个参数内的空格分隔内容(比如-f "foo_1 foo_2"),但Shell展开后是多个独立参数,因此该配置不适用当前场景。
  • multiple: true的作用是告知Slop,该选项可以接收任意数量的后续参数,直到碰到下一个选项标记。

内容的提问来源于stack exchange,提问作者Leonard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 05:52:34