Bash and Single Quotes

Cameron Simpson cs at zip.com.au
Sun Jan 11 10:32:59 UTC 2009


On 10Jan2009 22:34, RGH <rgheck at comcast.net> wrote:
>
> I'm trying to write a shell script to convert video files using vlc and  
> avidemux, and I've run into a problem. I need to be able to do something  
> like this:
>
>    vlc -v -I dummy $FIL  
> --sout='#transcode{vcodec=dummy,acodec=mp3,ab=192}:std{access=file,mux=dummy,dst="$MP3"}' 
> vlc://quit
>
> But of course this doesn't work because the $MP3 variable doesn't get  
> expanded in single quotes. The single quotes seem to need to be there to  
> protect the "{", though. So, how can this be done?

No, they don't. They're there to protect the double quotes, presuming
you literally need double quotes in the --sout= option value.

You want to use double quotes.
If you want literal double quotes, escape them, eg:

  --sout="#transcode...,dst=\"$MP3\"}"

(replace ... with the other stuff I left out)

Cheers,
-- 
Cameron Simpson <cs at zip.com.au> DoD#743
http://www.cskk.ezoshosting.com/cs/

Jones' Law: The man who can smile when things go wrong has found someone
        to blame it on.




More information about the fedora-list mailing list