Return to BSD News archive
Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!munnari.OZ.AU!news.ecn.uoknor.edu!news.eng.convex.com!newshost.convex.com!newsgate.duke.edu!news.mathworks.com!newsfeed.internetmci.com!csn!nntp-xfer-1.csn.net!ncar!newshost.lanl.gov!crs
From: crs@lanl.gov (Charlie Sorsby)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: cat foo* > foo.bar causes infinite loop
Date: 22 Nov 1996 22:29:30 GMT
Organization: Los Alamos National Laboratory
Lines: 69
Message-ID: <5759gb$79o@newshost.lanl.gov>
References: <328A1236.32C4@pilot.msu.edu> <56itkk$h59$1@nic.wat.hookup.net> <56mktc$b4a@uriah.heep.sax.de> <56vqp9$1a5@anorak.coverform.lan>
Reply-To: crs@hamlet.lanl.gov
NNTP-Posting-Host: hamlet.lanl.gov
In article <56vqp9$1a5@anorak.coverform.lan>,
Brian Somers <brian%anorak.coverform.lan@awfulhak.demon.co.uk> wrote:
= In article <56mktc$b4a@uriah.heep.sax.de>,
= j@uriah.heep.sax.de (J Wunsch) writes:
= : schaffer@wat.hookup.net wrote:
= :
= >> You should expect this behavior with any shell (no, I haven't tried):
= >> basically, the shell first looks for pipes, redirections etc. For
= >> redirected stdout it creates the target file, then evaluates the command
= >> (cat foo*).
= :
= : Just for the records, all of the available shells for FreeBSD (csh,
= : tcsh, sh, bash, zsh) experience this behaviour, except the pdksh.
= :
= : (I haven't tried to get a genuine ksh, but somebody else already
= : responded that it doesn't show this artifact.)
=
= Hmmmm,
=
[...Brian's examples deleted for brevity...]
=
= In fact, I get the same results using the csh and sh (ash) as supplied in
= both the above versions of FreeBSD ! Am I missing something ?
I had posted some time ago that my recollection was that there was
no infinite-loop problem in SunOS. I've since checked:
SPARCstation II running SunOS 4.1.4, using csh.
H% ls -lg
total 11
drwxr-xr-x 2 crs staff 512 Nov 22 15:18 ./
drwxr-xr-x 63 crs staff 6656 Nov 22 15:18 ../
-rw-r--r-- 1 crs staff 2 Nov 22 15:18 foo1
-rw-r--r-- 1 crs staff 2 Nov 22 15:18 foo2
-rw-r--r-- 1 crs staff 2 Nov 22 15:18 foo3
H% cat * > foo.all
cat: input foo.all is output
H% ls -lg
total 12
drwxr-xr-x 2 crs staff 512 Nov 22 15:19 ./
drwxr-xr-x 63 crs staff 6656 Nov 22 15:18 ../
-rw-r--r-- 1 crs staff 6 Nov 22 15:19 foo.all
-rw-r--r-- 1 crs staff 2 Nov 22 15:18 foo1
-rw-r--r-- 1 crs staff 2 Nov 22 15:18 foo2
-rw-r--r-- 1 crs staff 2 Nov 22 15:18 foo3
H%
Just for interest, I then tried again (after foo.all exists and
contains the contents of foo[123]. The result is the same. It
cats foo[123] into foo.all but will not use the output as input.
One gets the same complaint (cat: input foo.all is output) and when
it's done, foo.all is twice as big as it had been since the same
three files were catted to it (with >> since I have noclobber set)
a second time. I didn't try it with >! to over-ride noclobber but
surely if an infinite loop were going to form, it would have done
with >> wouldn't it?
= --
= Brian <brian%anorak.coverform.lan@awfulhak.demon.co.uk>
= <http://www.awfulhak.demon.co.uk/>
= Don't _EVER_ lose your sense of humour....
--
Best,
Charlie "Older than dirt" Sorsby "I'm the NRA!"
crs@swcp.com crs@hamlet.lanl.gov Life Member since 1965