Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 无法在目录路径中追加字符串_Ruby_Unix - Fatal编程技术网

Ruby 无法在目录路径中追加字符串

Ruby 无法在目录路径中追加字符串,ruby,unix,Ruby,Unix,目标:使用今天的名称重命名目录中的文件夹 日期 我使用ruby文件,其中我使用linux命令修改目录(ruby版本为2.2),我的代码如下所示 require 'date' class BSDK TDATE = Date.today.to_s DEFAULT_PATH = "/home/cyborg/bsdk/" VERSION = "bsdk-tk-4.2.71" def bsdk_processing bsdk_version = "#{DEFAULT_PATH}#

目标:使用今天的名称重命名目录中的文件夹 日期

我使用ruby文件,其中我使用linux命令修改目录(ruby版本为2.2),我的代码如下所示

require 'date'
class BSDK
  TDATE = Date.today.to_s
  DEFAULT_PATH = "/home/cyborg/bsdk/"
  VERSION = "bsdk-tk-4.2.71"

  def bsdk_processing
    bsdk_version = "#{DEFAULT_PATH}#{VERSION}"
    bsdk_latest = "#{bsdk_version}(#{TDATE})"
    system "mv #{bsdk_version} #{bsdk_latest}"
  end
end

bsdk = BSDK.new
bsdk.bsdk_processing
当我尝试打印bsdk_最新版本时,它给了我

/home/cyborg/bsdk/bsdk-tk-4.2.71
2019-08-22
而不是像《家庭/电子人/bsdk/bsdk-tk-4.2.71》(2019-08-22)


注意:我们在路径/home/cyborg/bsdk/

中有一个名为bsdk-tk-4.2.71的目录。正如@user1934428所指出的,问题得到了解决,版本中嵌入了新行

require 'date'
require 'fileutils'
class BSDK
  TDATE = Date.today.to_s
  DEFAULT_PATH = "/home/cyborg/bsdk/"
  VERSION = "bsdk-tk-4.2.71"
  VERSION.strip!

  def bsdk_processing
    bsdk_version = "#{DEFAULT_PATH}#{VERSION}"
    bsdk_latest = "#{bsdk_version}""(#{TDATE})"
    Fileutils.mv("#{bsdk_version}", "#{bsdk_latest}")
  end
end

bsdk = BSDK.new
bsdk.bsdk_processing

我刚刚将
系统
更改为
放置
,它显示了:
mv/home/cyborg/bsdk/bsdk-tk-4.2.71/home/cyborg/bsdk/bsdk-tk-4.2.71(2019-08-21)
。。。这就是你想要的,对吗?不,我想把文件夹/home/cyborg/bsdk/bsdk-tk-4.2.71重命名为home/cyborg/bsdk/bsdk/bsdk-tk-4.2.71(2019-08-22)@cyborg:。
bsdk\u最新。检查
显示什么?此外,您似乎构造了一个包含括号((#{TDATE}))的文件名。在本例中,您必须在
mv
命令中引用shell(bash或POSIX shell)的参数。感谢@user1934428,问题得到解决,其中嵌入了新行,这仍然会给您一个shell语法错误,因为您没有引用bsdk_latest。
require 'date'
require 'fileutils'
class BSDK
  TDATE = Date.today.to_s
  DEFAULT_PATH = "/home/cyborg/bsdk/"
  VERSION = "bsdk-tk-4.2.71"
  VERSION.strip!

  def bsdk_processing
    bsdk_version = "#{DEFAULT_PATH}#{VERSION}"
    bsdk_latest = "#{bsdk_version}""(#{TDATE})"
    Fileutils.mv("#{bsdk_version}", "#{bsdk_latest}")
  end
end

bsdk = BSDK.new
bsdk.bsdk_processing