From: Tzafrir Cohen on
On Sat, Apr 17, 2010 at 12:02:40PM -0400, Daniel D Jones wrote:
> On Saturday 17 April 2010 00:09:28 Michael Elkins wrote:
> > On Fri, Apr 16, 2010 at 08:15:38PM -0400, Daniel D Jones wrote:
> > >What I'm trying to do is pretty simple. Getting it to work is turning out
> > > not to be. What I want to do is call a bash script with a couple of
> > > arguments, and, within the script, call sed to use those args to replace
> > > two placeholders in a file:
> > >
> > >bashscript SUB1 SUB2
> > >
> > >This line inside bashscript doesn't work:
> > >
> > >sed -e 's/PLACEHOLDER1/$1/' -e 's/PLACEHOLDER2/$2/' < input > output
> >
> > If you switch the single quotes to double quotes it will work as you
> > expect. Variables inside of double quotes are expanded. Single quotes are
> > for literal strings, as you've discovered.
>
> That was the first thing I tried and sed gave me an error:
>
> sed: -e expression #1, char 18: unknown option to `s'
>
> I just went back and tried it again and it worked, so I have no idea what I
> did the first time that made it not work.

As others have mentioned, rgw command-line parameter $1 probably has a
'/' in it.

A simple workaround is to use a different character as the separator.
That is: *if* you can assume that variable will not contain the
character '|', you can use:

sed -e "s|PLACEHOLDER1|$1|' -e "s|PLACEHOLDER2|$2|" < input > output

You can use some other characters there as well. See sed(1).

--
Tzafrir Cohen | tzafrir(a)jabber.org | VIM is
http://tzafrir.org.il | | a Mutt's
tzafrir(a)cohens.org.il | | best
tzafrir(a)debian.org | | friend


--
To UNSUBSCRIBE, email to debian-user-REQUEST(a)lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster(a)lists.debian.org
Archive: http://lists.debian.org/20100420041023.GO16560(a)pear.tzafrir.org.il