Escaping spaces in arguments to shell script

Matthew Gillen me at mattgillen.net
Wed Apr 26 13:01:50 EDT 2006


Use quotes:  when invoke like
 ./makelink.sh foo "some thing"
$1 = "foo"
$2 = "some thing"

You're using a combination of quotes and escape ('\'), and therefore the escape
is being used literally.

Matt

Steven Erat wrote:
> Would someone kindly suggest the solution to passing input parameters to a
> shell script where the arguments may contain spaces?  
> 
> Please refer to the example below.
> 
> Thank you,
> Steven Erat
> 
> 
> [auser at localhost ~]$ ls
> makeLink.sh
> [auser at localhost ~]$ cat makeLink.sh 
> #!/bin/sh
> echo First arg is: $1, Second arg is $2
> /bin/ln -s $1 $2 
> [auser at localhost ~]$ mkdir foo
> [auser at localhost ~]$ ./makeLink.sh foo foo\ bar
> First arg is: foo, Second arg is foo bar
> /bin/ln: when making multiple links, last argument must be a directory
> [auser at localhost ~]$ ln -s foo boo\ hoo
> [auser at localhost ~]$ ls -l
> total 20
> lrwxrwxrwx  1 auser auser    3 Apr 26 11:50 boo hoo -> foo
> drwxrwxr-x  2 auser auser 4096 Apr 26 11:49 foo
> -rwxr-xr-x  1 auser auser   68 Apr 26 11:44 makeLink.sh
> [auser at localhost ~]$ ./makeLink.sh foo 'some\ thing'
> First arg is: foo, Second arg is some\ thing
> /bin/ln: when making multiple links, last argument must be a directory
> 
> _______________________________________________
> Discuss mailing list
> Discuss at blu.org
> http://olduvai.blu.org/mailman/listinfo/discuss




More information about the Discuss mailing list