The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Top Forums > Shell Programming and Scripting
.
google unix.com



Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
double variable declaration kotasateesh Shell Programming and Scripting 3 08-31-2007 06:29 AM
Escape Char for double quote navik_pathak Shell Programming and Scripting 1 01-05-2007 02:34 PM
single or double quote in SED asami Shell Programming and Scripting 2 07-17-2006 04:03 AM
Double Quotes within a variable burton_1080 Shell Programming and Scripting 4 12-01-2005 01:44 PM
double variable substitution asal_email2 UNIX for Dummies Questions & Answers 1 06-14-2005 01:35 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Search this Thread Rate Thread Display Modes
  #1 (permalink)  
Old 03-17-2008
mattemp mattemp is offline
Registered User
  
 

Join Date: Mar 2008
Posts: 2
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 (permalink)  
Old 03-17-2008
era
Guest
  
 

Posts: n/a
Bits: 0 [Banking]
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.
  #3 (permalink)  
Old 03-17-2008
KevinADC KevinADC is offline Forum Advisor  
Registered User
  
 

Join Date: Jan 2008
Posts: 731
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 (permalink)  
Old 03-17-2008
mattemp mattemp is offline
Registered User
  
 

Join Date: Mar 2008
Posts: 2
Quote:
Originally Posted by KevinADC View Post
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 (permalink)  
Old 03-18-2008
era
Guest
  
 

Posts: n/a
Bits: 0 [Banking]
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.)
  #6 (permalink)  
Old 03-18-2008
yunccll yunccll is offline
Registered User
  
 

Join Date: Mar 2008
Posts: 23
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 (permalink)  
Old 03-19-2008
faltooweb faltooweb is offline
Registered User
  
 

Join Date: Jan 2008
Posts: 11
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
Closed Thread

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On




All times are GMT -4. The time now is 02:35 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited. Language Translations Powered by .
vBCredits v1.4 Copyright ©2007 - 2008, PixelFX Studios
The UNIX and Linux Forums Content Copyright ©1993-2009. All Rights Reserved.Ad Management by RedTyger

Content Relevant URLs by vBSEO 3.2.0