Typically for loops in UNIX shell look like this:

for file in `ls *.c`
do
    cmd $file
done

However, the above has a serious problem in that it does not handle spaces in file names and will actually split the filename in two.

The following is a solution in bash:

files=(*.c)
for f in${files[@]}do
    cmd "$f"
done

But my favourite way to perform a loop and probably the most elegant solution is to use file globbing:

for f in *.c
do
    cmd "$f"
done
© 2012 rootsmith blog Suffusion theme by Sayontan Sinha