外壳执行中的拼音字符串插值



我正在尝试制作一个程序的一部分,该程序将创建一个以当前日期作为文件夹名称的文件夹,最简单的方法似乎是使用字符串内插,但这不起作用,我不确定如何获取要使用的变量

require 'date'
puts "Start"
datuh = DateTime.now
puts datuh
pid1 = Kernel.spawn('mkdir -p "#{datuh}"')
Process.wait pid1
puts "Finished"

最终目标是创建一个具有当前日期的文件夹,但它现在创建了一个名为#{Datuh}的文件夹

谢谢

为了避免引用问题,您可能需要另一种形式的spawn

pid = Kernel.spawn 'mkdir', '-p', datuh.to_s

但是,为什么要向系统呼唤?

Dir.mkdir datuh.to_s

或者,要合并-p提供的"不抛出错误"功能:

begin
Dir.mkdir datuh.to_s
rescue SystemCallError => e
raise e unless e.errno == Errno::EEXISTS::Errno
end

require 'fileutils'
FileUtils.mkdir_p datuh.to_s

问题是您对字符串使用单引号。单引号字符串不使用内插。这是有效的:

require 'date'
puts "Start"
datuh = DateTime.now
puts datuh
pid1 = Kernel.spawn("mkdir -p "#{datuh}"")
Process.wait pid1
puts "Finished"

更多详情请见:https://ruby-for-beginners.rubymonstas.org/bonus/string_interpolation.html

最新更新