Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Problems with for loops and : modifiers



I'm having problems doing something that should be simple. I want to iterate over a set of files in a directory and run some commands on those files. In the command I would like to strip the suffix of a filename away (ie basename) and add a new suffix.

I can do this interactively in zsh, using several of the different builtin "for" commands, but not in the following shell script.

Q:

1. Why do the "for" loops work interactively and get a syntax error in a script? To me a newline terminator is a newline terminator.

2. Maybe I have the sense of SHORT_LOOPS backward?

3. Why does the :r modifier work interactively and not in a script?

4. What are the suggested ways to do what I want to do?

zsh script follows.

Thanks in advance.

leb

#/bin/zsh

echo "one"
#files get echoed but :r is broken
for i in *.h; { echo $i:r ; }

echo "two"
#file get echoed, but :r is broken
for i in *.h
do
echo ${i}:r
done

echo "three"
# works perfectly when run interactively but gets an error in a script
#for i (*.h) echo $i:r

echo "four"
# works perfectly when run interactively but gets an error in a script
#foreach i ( *.h)
#echo $i:r
#end
#


-- 
Lawrence E. Bakst
pleb@xxxxxxxxxxxxxx



Messages sorted by: Reverse Date, Date, Thread, Author