Flowdock
method

sh

Importance_2
Ruby latest stable (v2_5_5) - 0 notes - Class: FileUtils

Method deprecated or moved

This method is deprecated or moved on the latest stable version. The last existing version (v2_2_9) is shown here.

sh(*cmd, &block) public

Run the system command cmd. If multiple arguments are given the command is run directly (without the shell, same semantics as Kernel::exec and Kernel::system).

It is recommended you use the multiple argument form over interpolating user input for both usability and security reasons. With the multiple argument form you can easily process files with spaces or other shell reserved characters in them. With the multiple argument form your rake tasks are not vulnerable to users providing an argument like ; rm # -rf /.

If a block is given, upon command completion the block is called with an OK flag (true on a zero exit status) and a Process::Status object. Without a block a RuntimeError is raised when the command exits non-zero.

Examples:

sh 'ls -ltr'

sh 'ls', 'file with spaces'

# check exit status after command runs
sh %{grep pattern file} do |ok, res|
  if ! ok
    puts "pattern not found (status = #{res.exitstatus})"
  end
end
Show source
Register or log in to add new notes.