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

Ruby中使用exec命令时如何通过控制台传递参数?

嘿,我一眼就看出问题所在啦!你用了单引号包裹exec的命令字符串,但Ruby里单引号不会解析字符串插值(#{...}语法)——它会把#{argv[1]}当成字面量直接传给ls命令,那ls肯定找不到叫#{argv[1]}的文件,自然就没任何输出了。

修复方案

方案1:改用双引号解析插值

把单引号换成双引号,这样Ruby就会把argv[1]的值替换进去:

exec("ls -l #{argv[1]}")

方案2:更安全的多参数调用(推荐)

如果要避免潜在的shell注入风险(比如传入的参数包含;、|这类特殊字符时,单参数形式会被shell解析执行),推荐使用exec的多参数形式:

exec('ls', '-l', argv[1])

这种方式下,exec会直接调用ls命令,把-l和argv[1]作为独立的命令参数传递,完全绕开shell解析,既安全又可靠。

额外检查点

别忘了确认你运行脚本时确实传入了参数!比如你的脚本叫file_check.rb,运行时要这样传参:

ruby file_check.rb /your/target/path

如果不确定参数是否正确传入,可以先加一行打印验证:

puts "当前传入的目标路径:#{argv[1]}"
exec('ls', '-l', argv[1])

内容的提问来源于stack exchange,提问作者M.use

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:03:51