Problem with double quote and string variable


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Problem with double quote and string variable
# 1  
Old 03-17-2008
Problem with double quote and string variable

Hello,

i have a file output.txt which contains a single line with a list of files with quotes :
"file1.ext" "file2.ext" "file3.ext"

In a shell script, I want to retrieve the line and use it as a variable in a command like :
zip archive.zip $LIST

I cant get it work. When I physically type the command zip archive.zip "file1.ext" "file2.ext" "file3.ext", it works just fine but when I try to use a string variable I get an error.

Is there a proper way to do that?
Thank you !
# 2  
Old 03-17-2008
When you type it on the command line, the double quotes are not passed to zip. If you are using a script (show it!) then if it is passing in the quotes so that zip sees them, stop doing that.

If you have control over the thing which generates the output file, make it use a less zany format. See how xargs does it; that's probably a good model for you.
era
# 3  
Old 03-17-2008
Quote:
i have a file output.txt which contains a single line with a list of files with quotes :
"file1.ext" "file2.ext" "file3.ext"
open the file and remove the quotes if you have no control over the file format. Then split the fields on the spaces to create a list of files to feed to the zip function.

Post your current code (or just the relevant part) for more help.
# 4  
Old 03-17-2008
Quote:
Originally Posted by KevinADC
open the file and remove the quotes if you have no control over the file format. Then split the fields on the spaces to create a list of files to feed to the zip function.

Post your current code (or just the relevant part) for more help.
Here is the part of my script where I need my files list:
Code:
LIST=$(tail -1 $FILE)
cvs log -N -r$rev1:$rev2 $LIST > changelog.txt

My file looks like this :
Code:
"java/file1.java" "java/file2.java" "java/file3.java" "java/file4.java" "java/file5.java"

It is the output of a xslt processing so I do have control on it. I can generate a file which looks like this, without quotes and my script works perfectly :
Code:
java/file1.java java/file2.java java/file3.java java/file4.java java/file5.java

But I wanted to wrap the filenames around quotes in case some of the filenames contain whitespaces.

So maybe I should just work on my xsl stylesheet in order to escape whitespaces in filenames?
# 5  
Old 03-18-2008
Or if you have the option, make it one file per line (and worry about file names with newlines in them instead ...).

xargs has an option to use a null (ASCII 0x00) terminator for that particular case. (Nulls and slashes are the only two characters which are disallowed in directory entry names.)
era
# 6  
Old 03-18-2008
if you want to do this job with script, you can try code as follow:
Code:
#!/bin/bash

INFILE=output.txt

#replace the double quote with space
LIST=$(sed -e 's/\"/ /g' $INFILE)

zip archive.zip $LIST

exit 0

# 7  
Old 03-19-2008
Problem with double quote and string variable

Here is a quick fix for your script

LIST=$(tail -1 $FILE)
cvs log -N -r$rev1:$rev2 $(eval $LIST) > changelog.txt

-Ramesh
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help/Advise please for converting space delimited string variable to comma delimited with quote

Hi, I am wanting to create a script that will construct a SQL statement based on a a space delimited string that it read from a config file. Example of the SQL will be For example, it will read a string like "AAA BBB CCC" and assign to a variable named IN_STRING. I then concatenate... (2 Replies)
Discussion started by: newbie_01
2 Replies

2. Shell Programming and Scripting

Replacing all but the first and last double quote in a line with a single quote with awk

From: 1,2,3,4,5,This is a test 6,7,8,9,0,"This, is a test" 1,9,2,8,3,"This is a ""test""" 4,7,3,1,8,"""" To: 1,2,3,4,5,This is a test 6,7,8,9,0,"This; is a test" 1,9,2,8,3,"This is a ''test''" 4,7,3,1,8,"''"Is there an easy syntax I'm overlooking? There will always be an odd number... (5 Replies)
Discussion started by: Michael Stora
5 Replies

3. Shell Programming and Scripting

Replacing Double Quote in Double Quote incsv file

Hi All , We have source data file as csv file and since data could contain commas ,each attribute is quoted into double quotes.However problem is that some of the attributa data also contain double quotes which is converted to double double quote while creating csv file XLs data : ... (2 Replies)
Discussion started by: Shalini Badal
2 Replies

4. Shell Programming and Scripting

Replace double quotes with a single quote within a double quoted string

Hi Froum. I have tried in vain to find a solution for this problem - I'm trying to replace any double quotes within a quoted string with a single quote, leaving everything else as is. I have the following data: Before: ... (32 Replies)
Discussion started by: pchang
32 Replies

5. Shell Programming and Scripting

getting value between double quote

Can somebody supply me with a simple way to get a value between two double quotes? Example: input = ADR base is "/u01/app/oracle" output = /u01/app/oracle Thanks to all who answer (4 Replies)
Discussion started by: BeefStu
4 Replies

6. Shell Programming and Scripting

double quote as the delimiter

I'm trying to extract a column from a csv file with either cut or awk but some of the fields contain comma with them: "Field1","Field2, additional info","Field3",...,"Field17",... If I want to extract column 3 and use comma as the delimiter, I'll actually get the additional info bit but not... (4 Replies)
Discussion started by: ivpz
4 Replies

7. Shell Programming and Scripting

Replacing the string after certain # of double quote

Could you please help in unix scripting for below scenario... In my input file, there might be a chance of having a string ( Ex:"99999") after 5th double quote for each record. I need to replace it with a space. Ex : Input : "abcdef","12345","99999","0986"... (3 Replies)
Discussion started by: vsairam
3 Replies

8. Shell Programming and Scripting

Regex in grep to match all lines ending with a double quote (") OR a single quote (')

Hi, I've been trying to write a regex to use in egrep (in a shell script) that'll fetch the names of all the files that match a particular pattern. I expect to match the following line in a file: Name = "abc" The regex I'm using to match the same is: egrep -l '(^) *= *" ** *"$' /PATH_TO_SEARCH... (6 Replies)
Discussion started by: NanJ
6 Replies

9. Shell Programming and Scripting

double-quote inside double-quote

hey all, i made a simple .sh like this: echo "<style media="screen" type="text/css">@import url("main.css");</style>" but the output is: <style media=screen type=text/css>@import url(main.css);</style> i want to keep double-quotes, can anyone help me? thanks (3 Replies)
Discussion started by: indraf
3 Replies
Login or Register to Ask a Question