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

It doesn't work because the command line args ($1, $2) are quoted and don't 
get replaced.  However, because I'm using the -e argument to sed, I have to 
quote the argument or sed gets all huffy.  I've tried all sorts of variations 
on the quoting and either bash or sed isn't happy no matter what I do.

The only workaround I've found is to do the substitutions in two passes:

sed s/SUB1/$1/ < input > temp 
sed s/SUB2/$2/ < temp > output

Since I'm not using multiple argument to sed, I don't have to quote the arg.  
That's an ugly hack and really rubs me the wrong way, however, and it'll get 
really ugly if I end up having to do more than two substitutions, which I 
expect to do at a later date.  I suppose I could pipe one sed command to 
another rather than using a temp file but that's not significantly more 
palatable.

Any ideas on a cleaner approach on how to do this, either by getting this 
right or using an alternative method, are welcome.  One thing to note is that 
this is a small part of a larger, more complex script, so the bash script 
can't (easily) go away.  I don't have to use sed to do the replacement if 
there's another approach from within the bash script that would work.

-- 
"Americans detest all lies except lies spoken in public or printed lies." - 
Edgar Watson Howe


-- 
To UNSUBSCRIBE, email to debian-user-requ...@lists.debian.org 
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/201004162015.38878.ddjo...@riddlemaster.org

Reply via email to