Escaping problem in a shell script


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Escaping problem in a shell script
# 1  
Old 10-24-2012
Escaping problem in a shell script

Hi,
i made a gnuplot script which accepts a filename as parameter (using gnuplot -e) now i want to run this script from a shell script, the correct command (with a concrete parameter) looks like this:

Code:
gnuplot -e 'name="filename.dat;col=2"' gplscript.gpl

my shell script looks like this:
Code:
        gnuplot -e \'name=\"${1}.dat\"\;col=2\' gplscript.gpl

        echo \'name=\"${1}.dat\"\;col=2\'

the output typing sh script.sh filename is:
Code:
'name="filename.dat";col=2'
^
line 0: invalid command

'name="filename.dat";col=2'

i must have made a mistake with the escaping but i cannot find it.

btw. the echo results is correct, as you can see it is the same as in the correct command example in the beginning and it works as it should.

But i use the same escape sequence in the gnuplot part of the shellscript which looks correct in the output, apart from the error.
# 2  
Old 10-24-2012
By escaping the single quote, you've turned them into literal quote characters which get passed into gnuplot raw.

Code:
'name="filename.dat";col=2'

If you actually typed that into gnuplot quotes and all like that, it wouldn't work.

Since you want to expand variables inside the quotes, I suggest double quotes instead of single ones, unescaped. You can use single quotes inside without escaping them. Much less work.

Code:
gnuplot -e "name='${1}.dat';col=2" gplscript.gpl


Last edited by Corona688; 10-24-2012 at 01:30 PM..
# 3  
Old 10-25-2012
thank you i will try this tomorrow when i have access to my workstation again.
but to make this clear, i need the single quotes in the gnuplot command because the flag -e expects a list of "commands" seperated by ";" within quotes (' ')
but i think the double quotes could work too.
btw: the example in the first quote block i posted above works fine

---------- Post updated 10-25-12 at 08:17 AM ---------- Previous update was 10-24-12 at 05:11 PM ----------

hi again, i just tested your suggestion and it works great, thanks again.
# 4  
Old 10-25-2012
Quote:
Originally Posted by franko007
thank you i will try this tomorrow when i have access to my workstation again.
but to make this clear, i need the single quotes in the gnuplot command because the flag -e expects a list of "commands" seperated by ";" within quotes (' ')
You've missed the point, not to mention seem confused about how quoting works.

The quotes are for the shell, not gnuplot. They tell a string not to split. GNUplot doesn't care about them. GNUplot doesn't see them, and shouldn't see them.

Code:
# quotes are not echoed.  The shell removes them before echo is run.
$ echo 'asdf'

asdf

# quotes are not echoed.  The shell removes them before echo is run.
$ echo "asdf"

asdf

$

If you're feeling masochistic, you can do this completely without quotes just by escaping everything:

Code:
gnuplot -e name=\'${1}.dat\'\;col=2 gplscript.gpl

...and gnuplot will swallow it happily as long as $1 contains no spaces. GNUplot doesn't care. It gets the exact same string once the shell's through with it.

Last edited by Corona688; 10-25-2012 at 12:28 PM..
# 5  
Old 10-25-2012
Thank you for this helpful explanation, you are right i did not realy knew what the real purpose of those quotes is.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell script newbie, what is problem with my script?

Hello, Ubuntu server 11.10 can anybody help what is problem with my shell script? #!/bin/bash #script to find out currently logged on user is root or not. if ] then echo "You are super" else echo "You are awesome!" fi When I run script, I get following output ./uid: line 3: I... (4 Replies)
Discussion started by: kaustubh
4 Replies

2. Shell Programming and Scripting

escaping metacharacters in paths for a shell command

I have a file which contains a list of paths separated by a new line character. e.g /some/path/to/a/file.png /some/path to/another/file.jpeg /some path/to yet/another/file Notice that these paths may contain metacharacters, the spaces for example are also not escaped. If I wanted... (5 Replies)
Discussion started by: cue
5 Replies

3. Shell Programming and Scripting

Delete line with match and previous line quoting/escaping problem

Hi folks, I've list of LDAP records in this format: cat cmmac.export.tmp2 dn: deviceId=0a92746a54tbmd34b05758900131136a506,ou=devices,ou=customer,ou=nl,o=upc cmmac: 00:13:11:36:a5:06 dn: deviceId=0a92746a62pbms4662299650015961cfa23,ou=devices,ou=customer,ou=nl,o=upc cmmac:... (4 Replies)
Discussion started by: tomas.polak
4 Replies

4. Shell Programming and Scripting

call shell script from perl cgi script problem

hi,, i have perl scipt with line : system('./try.sh $t $d $m'); in shell scipt try.sh i have the line: echo $1 its not printing value of $t that i hav passed..y is it so..i am running it from apache web server (2 Replies)
Discussion started by: raksha.s
2 Replies

5. Shell Programming and Scripting

escaping double-quotes inside the script?

I'm having a strange problem with escaping double-quotes. I have a script that looks like this: #!/bin/bash for HOST in `cat $INFILE | grep -v ^#` do for VFILER in `some_command` do echo " " echo -e '\E The problem with ssh command... (3 Replies)
Discussion started by: GKnight
3 Replies

6. Shell Programming and Scripting

problem escaping newline in ksh

Hi, I did the below. $ print "\\n" $ I am curious, why does \\n give two new lines? I would have thought that the first \ would escape the second \, and so we'd get \n printed. But we didn't. Any ideas? Thanks. (7 Replies)
Discussion started by: JamesByars
7 Replies

7. Shell Programming and Scripting

Escaping apostrophe using shell script

Hi, I am using the KSH shell. I am facing a problem of escaping apostrophe('), that is occuring in a variable. I used the following command, but in vain item=`echo $item|sed 's/'/\'/g'` this code replaces the occurance of ' in an xml file to apostrophe(') symbol. The output of... (2 Replies)
Discussion started by: mradul_kaushik
2 Replies

8. Shell Programming and Scripting

bash script help: escaping the '*'

hi there. i have a simple bash script that reads a word from a text file one at a time, and if a '*' character is encountered, it prints a message. however it doesn't work as i expected. :o what am i doing wrong here? thanks very much for the help :) for word in `cat $DOC` do if... (18 Replies)
Discussion started by: mark_nsx
18 Replies

9. Shell Programming and Scripting

escaping * in korn shell

When trying to escape special character * - it doesn't seem to work. In korn shell trying to store a local variable as follows sample=test* echo $sample - gets all the file names starting with test* , instead i want to literally store the value test* into a variable. I tried escaping with \, with... (3 Replies)
Discussion started by: prekida
3 Replies

10. Solaris

escaping * in korn Shell under Sun Solaris

When trying to escape special character * - it doesn't seem to work. In korn shell trying to store a local variable as follows sample=test* echo $sample - gets all the file names starting with test* , instead i want to literally store the value test* into a variable. I tried escaping with \, with... (1 Reply)
Discussion started by: prekida
1 Replies
Login or Register to Ask a Question