🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: gnu.bash.bug
Article #1068

Strange behavior with functions

#1068
From: Bill Trost
Date: Tue, 19 Dec 1989 23:46
39 lines
1325 bytes
The noise on alt.sources.wanted about file reversal made me come up
with this little program:

#!/local/bin/bash
# Yes, all through this I should be using "$@", but that's for version
# 1.05 (I have 1.04)

rv () {
	[ $# = 0 ] && {
		# Call this block A
		local line=empty\?\?\?
		read line || return
		echo Read: "$line" 2>&1
		rv
		echo "$line"
		# end A
		return
	}
	# Call this block B
	local f=$1
	shift
	[ $# = 0 ] || rv $*
	rv < $f
}

rv $*


Now, if I run this with no arguments (using /etc/motd as stdin), it
works on the Decstation and longjmp botches after echoing "empty" on
the Vax.  If I run it with one argument, it does a longjmp botch after
echoing "empty" on either machine.

Then, if I swap blocks A and B and change the "&&" to a "||", with no
arguments it works on the DECstation, but it prints "empty" for the
first line and never prints the first line of the file (which should
be printed last).

Of course, Chet has probably already fixed it....  :-)
Technical Details
Message-ID: <13771@reed.UUCP>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!uunet!zephyr.ens.tek.com!tektronix!reed!trost

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!jarvis.csri.toronto.edu!clyde.concordia.ca!uunet!zephyr.ens.tek.com!tektronix!reed!trost
From: trost@reed.bitnet (Bill Trost)
Newsgroups: gnu.bash.bug
Subject: Strange behavior with functions
Message-ID: <13771@reed.UUCP>
Date: 19 Dec 89 23:46:35 GMT
Sender: news@reed.UUCP
Lines: 39