Ruby标准库exec中变量展开的正确引号语法咨询
Ruby脚本实现变量展开的正确引号语法
在Ruby中,要实现变量展开(插值),需要使用双引号(" "),单引号会将内容视为纯文本,不会解析#{}格式的变量。
针对你提供的脚本,修正后的写法有两种:
- 用双引号包裹整个命令字符串,触发变量插值:
ARGF.each do |l| exec "cp #{l} #{l}.bk" end
- 更安全的数组传参方式(避免shell注入风险,无需依赖引号插值):
ARGF.each do |l| exec "cp", l, "#{l}.bk" end
注意:原脚本中直接写exec cp #{l} #{l}.bk是语法错误,Ruby会把cp当作方法调用而非shell命令的一部分,必须用引号或数组形式明确命令内容。
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

