Date: Sun, 10 May 1998 10:36:37 +0100 From: Brian Somers <brian@Awfulhak.org> To: "John W. DeBoskey" <jwd@unx.sas.com> Cc: freebsd-hackers@FreeBSD.ORG Subject: Re: Unexpected behaviour from pdksh. Comments? Message-ID: <199805100936.KAA20765@awfulhak.org> In-Reply-To: Your message of "Sat, 09 May 1998 21:52:21 EDT." <199805100152.AA24180@mozart>
next in thread | previous in thread | raw e-mail | index | archive | help
The *only* shell that executes the last bit of a pipe inline is the original ksh. Pdksh, zsh, sh, ash, bash and probably just about all other shells create a subshell. This is a pain - something | read this that theother must be changed to read this that theother <<eof `something` eof It's too late to change the other shells now though. > Hi, > > The following is on 3.0-CURRENT using pdksh. > > Given the following sample Korn Shell script: > > export FOO=foo > echo $FOO > > echo bar | while read var; do > export FOO=$var > echo $FOO > done > > echo $FOO > > The output is: > foo > bar > foo > > where I was expecting: > foo > bar > bar > > > > > If I put the value 'bar' in a file and change the while > loop to: > > echo bar > varfile > while read var; do > export FOO=$var > echo $FOO > done < varfile > > I get the expected reult with the above. > > It seems that the pipe '|' is causing the 'while read var' to > execute in a subshell. Does anyone know of a way to make this > work the way I am expecting it to? fyi: this seems to work ok > under hpux 9.05 & 10.20 and SunOS 5.6... > > Thanks, > John > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-hackers" in the body of the message -- Brian <brian@Awfulhak.org>, <brian@FreeBSD.org>, <brian@OpenBSD.org> <http://www.Awfulhak.org> Don't _EVER_ lose your sense of humour.... To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199805100936.KAA20765>