Can I use a variable in sed?

Brian Dessent
Thu May 24 11:40:00 GMT 2007

Jerome Fong wrote:

> I'm trying to write a script that allows me to change the port number
> depending on when environment I'm in.  I can pass in the port number to
> my script, but I stuck trying to get sed modify my file with my port
> number variable.   Here is the line I'm executing
> sed '1,$ s^8080^$Shutdown_Port^' <./temp.xml >./server.xml
> Since my line started out to be
> <Server port="8005" shutdown="SHUTDOWN">
> Since Shutdown_Port was 9300, I thought the resulting line would be
> <Server port="9300" shutdown="SHUTDOWN">
> Instead, I got:
> <Server port="$Shutdown_Port" shutdown="SHUTDOWN">
> What am I doing wrong here?  Can sed be passed a variable?

This isn't Cygwin-specific at all.

You've used $Shutdown_Port inside a single-quoted string.  Shell
variable expansion does not occur there; that's the whole point of
single quotes.  

$ var=value; echo '$var is $var'; echo "$var is $var"; \
             echo '$var is '$var' is $var'
$var is $var
value is value
$var is value is $var


Unsubscribe info:
Problem reports:

More information about the Cygwin mailing list