bash script with spaces
I am running into one problem with a bash script when the files it's analyzing contain spaces in the name. After some debugging I've narrowed it down to the following. I have a variable that's formed by grep'ing multiple lines out of a file. The contents of the variable are the filenames separated by \n characters (at least that's what it looks like when piping grep into a file. For example:
file name 1.txt program name 1.sh Now I need to perform several operations on each file individually. If I use a for loop this should work nicely. for F in $FILENAMES ... ... done This code breaks the files up by spaces and \n characters, so in this case I get 6 iterations. If I enclose the $FILENAMES variable in "s, then I get only one string to work with, the entire contents of $FILENAMES in one iteration. What I need to have is $F be 'file name 1.txt' in the first iteration and 'program name 1.sh' in the second iteration (without the 's of course). What's a good way for me to do this? Thanks much! |
This is a very common problem.
Here's a link to a reponse I made: http://www.linuxquestions.org/questi...81#post1864781 Doing a search in the forums for similar words or phrases ought to give you a ton of other ways. |
Thanks, I've been looking for something like this for quite some time but always managed to just find a more convoluted way around in the past. Your hint works great. Only thing I did different is kept the same 'for' loop code (without the quotes) as I need the variable later on and no need to grep the file twice. After using the IFS trick it seems that quoting isn't nearly as touchy in for loops.
|
All times are GMT -5. The time now is 12:04 PM. |