2.5 Ways to Execute a Shell Command

Gabe Berke-Williams

I always get confused by the difference between %x{}, backticks, and system "command", so I wrote down what the difference was. %x{} is actually the exact same thing as backticks, but it’s useful because you can nest backticks inside it.

system "command" echoes to STDOUT, and returns true if the command succeeded.

irb > system "echo ABC"
ABC
 => true 

Backticks and %x{ } do not echo to STDOUT, and return the result of running the command.

irb > `echo ABC`
 => "ABC\n" 
irb > %x{echo ABC}
 => "ABC\n"
irb > %x{echo `which ruby`}
 => "/Users/gabe/.rvm/rubies/ruby-1.9.2-p290/bin/ruby\n"

About thoughtbot

We've been helping engineering teams deliver exceptional products for over 20 years. Our designers, developers, and product managers work closely with teams to solve your toughest software challenges through collaborative design and development. Learn more about us.