Bash / Escaping quotes is driving me crazy . .

Philip Rhoades phil at pricom.com.au
Tue Feb 23 01:42:58 UTC 2016


Gordon,


> Date: Mon, 22 Feb 2016 08:56:54 -0800
> From: Gordon Messmer <gordon.messmer at gmail.com>
> To: users at lists.fedoraproject.org
> Subject: Re: Bash / Escaping quotes is driving me crazy . .
> Message-ID: <56CB3DD6.2020909 at gmail.com>
> Content-Type: text/plain; charset=utf-8; format=flowed
> 
> On 02/20/2016 07:18 PM, Philip Rhoades wrote:
>> OK, that all makes sense but there is a further issue - I was trying
>> to keep it simple - this whole line is inside a Ruby "system" command 
>> ie:
>>   system( "ssh .. " )
>> I can't use the second option because I need to use double quotes so
>> that I can use Ruby variables inside the double quotes eg:
> 
> I think you're still missing some fundamental concepts about nesting
> quotes.  (I was also mistaken in suggesting that the wildcards needed
> escaping when the internal double-quotes were escaped, though, so...  
> We
> all make mistakes.)
> 
> In Ruby double-quoted strings, you can get interpolation, and in single
> quoted strings you don't.  But if you nest single quotes inside a
> double-quoted strings, Ruby still treats the entire string as double
> quoted.  It doesn't change the rules when it finds single quotes inside
> the double-quoted string, because they're merely a part of the
> double-quoted string.  So your options are:
> 
> system("ssh localhost \"find /home/... -maxdepth 1 -type f \\\\( -name
> \\\"*.mp3\\\" -o -name \\\"*.m4a\\\" -o -name \\\"*.flac\\\" \\\\)\" ")
> 
> or:
> 
> system("ssh localhost 'find /home/... -maxdepth 1 -type f \\( -name
> \"*.mp3\" -o -name \"*.m4a\" -o -name \"*.flac\" \\)' ")
> 
> Using single quotes means significantly less escaping, and you can 
> still
> use interpolation in any part of that string, in Ruby.


 From another response, what I have actually ended up with is:

  system("ssh localhost 'find /home/... -maxdepth 1 -type f \\( -name
  \*.mp3 -o -name \*.m4a -o -name \*.flac \\)' ")

Thanks!

Phil.
-- 
Philip Rhoades

PO Box 896
Cowra  NSW  2794
Australia
E-mail:  phil at pricom.com.au


More information about the users mailing list