Execute bash commands from a Rakefile

后端 未结 5 2048
余生分开走
余生分开走 2020-11-30 01:57

I would like to execute a number of bash commands from a Rakefile.

I have tried the following in my Rakefile

         


        
5条回答
  •  既然无缘
    2020-11-30 02:49

    There are several ways to execute shell commands in ruby. A simple one (and probably the most common) is to use backticks:

    task :hello do
      `echo "World!"`
    end
    

    Backticks have a nice effect where the standard output of the shell command becomes the return value. So, for example, you can get the output of ls by doing

    shell_dir_listing = `ls`
    

    But there are many other ways to call shell commands and they all have benefits/drawbacks and work differently. This article explains the choices in detail, but here's a quick summary possibilities:

    • stdout = %x{cmd} - Alternate syntax for backticks, behind the scenes it's doing the same thing

    • exec(cmd) - Completely replace the running process with a new cmd process

    • success = system(cmd) - Run a subprocess and return true/false on success/failure (based on cmd exit status)

    • IO#popen(cmd) { |io| } - Run a subprocess and connect stdout and stderr to io

    • stdin, stdout, stderr = Open3.popen3(cmd) - Run a subprocess and connect to all pipes (in, out, err)

提交回复
热议问题