From: Marc Weber Date: 2010-04-09T21:51:19+09:00 Subject: Re: How to capture output of linux command Excerpts from Albert Schlef's message of Fri Apr 09 13:46:34 +0200 2010: > Damjan Rems wrote: > > > > You can run linux command: > > > > a = `ls /home` > > > > and receive output in variable a. > > > > But I would like /home to be variable. So I would invoke command like > > this: > > > > a = `"ls #{dir}"` > > As Ryan said, you need to remove the double quotes. You're asking the > shell to execute the "ls whatever" command. There's no such command. > > BTW, you actually want double quotes there, but put them around the > parameter: > > a = `ls "#{dir}"` > > The purpose of the double quotes here is to protect against the case > where the 'dir' variable contain spaces (which are meaningful to the > shell --they separate tokens). If we got hat route you want ls -- ${dir} to protect against directories called "-a" or such .. And keep in mind that directories may contain slashes and such stuff on linux. eg try mkdir a\\b thus using quotes is not enough. It may work for most cases you use though. Anyway I'd do it right - you never know. Marc Weber