On Fri, Apr 17, 2015, at 04:46 PM, Maarten de Vries wrote:
> 
> 
> On 04/17/2015 10:34 PM, Maarten de Vries wrote:
> >
> >
> > On 04/17/2015 10:19 PM, Christian Demsar wrote:
> >> http://pastebin.com/YJFvUt13
> >>
> >> It works on my (single) test case so far. I don't have any more time to 
> >> work in this right now, but I'll test edge cases and add more comments 
> >> later (feedback is welcome).
> >>
> >> If you use this, please, please, please back up your zip file in a 
> >> different directory. I haven't tested it thoroughly enough to be confident 
> >> that it won't suck your files into the black hole of /dev/null.
> >>
> >> On a side note, it does check to make sure the directory doesn't exist, so 
> >> it shouldn't clobber anything. That goes for the internal zips as well.
> >>
> >> The only cryptic thing in the $IFS env var. That's needed for newline 
> >> delimiters, so I can iterate over the zip files in a directory. I'll 
> >> experiment with leaving that section out.
> >>
> >> There's probably a bash guru out there that can do this with a one-liner, 
> >> but that's beyond my skills (I'm a newbie at bash, too).
> >
> > You should be able to avoid fiddling with IFS by using:
> >
> >     shopt -s nullglob
> >     zipfiles=(*.zip)
> >
> > It also has the advantage of not spawning a process to find zip files. 
> > The nullglob option is needed in case there are no zip files, 
> > otherwise (*.zip) will turn into a literal ('*.zip') instead of an 
> > empty array.
> >
> > Regards,
> > Maarten
> 
> Oh, and I forgot to mention that when you do that you ought to loop over 
> the array as (bash is a bit weird):
> 
>     for file in "${zipfiles[@]}"; do
> 
> Otherwise paths with spaces would be a problem.
> 
> Regards,
> Maarten
> 

I'll try to use the globbing. That's new to me.

Is there anything else you saw that was odd? This is the first non-trivial 
script I've written (recursion in bash!), so I'm not sure about the placement 
of the functions, etc. Is there a way to declare the functions like in C? I 
couldn't figure that out from the section on functions in Advanced Bash 
Scripting.

-- 
vixsomnis

Reply via email to