簡體   English   中英

從Ruby腳本運行Linux系統命令

[英]Running Linux system commands from Ruby script

我有以下創建Debian軟件包的Ruby腳本,該腳本運行良好:

#!/usr/bin/ruby

  dest = "#{File.dirname(__FILE__)}/../build"
  package = "foo"

  [
    "cd #{dest} && tar czvf data.tar.gz bin console data.sql etc filter install.rb",
    "cd #{dest} && tar czvf control.tar.gz control",
    "cd #{dest} && echo 2.0 > debian-binary",
    "cd #{dest} && ar -cr #{package}.deb debian-binary control.tar.gz data.tar.gz",
    "cd #{dest} && mv #{package}.deb ..",
    "cd #{dest} && rm data.tar.gz control.tar.gz",
  ].each do |command|
    puts command
    system(command)
  end

在Ruby中,有什么方法可以省去每個命令的“ cd#{dest} && ”部分?

Dir.chdir(dest) do
  # code that shall be executed while in the dest directory
end

當用塊調用Dir.chdir時,將更改到給定目錄,執行該塊,然后再變回。

您也可以無障礙地使用它,在這種情況下,它永遠不會變回來。

是。 使用Dir.chdir

#!/usr/bin/ruby

  dest = "#{File.dirname(__FILE__)}/../build"
  package = "foo"

  Dir.chdir dest
  [
    "tar czvf data.tar.gz bin console data.sql etc filter install.rb",
    "tar czvf control.tar.gz control",
    "echo 2.0 > debian-binary",
    "ar -cr #{package}.deb debian-binary control.tar.gz data.tar.gz",
    "mv #{package}.deb ..",
    "rm data.tar.gz control.tar.gz",
  ].each do |command|
    puts command
    system(command)
  end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM