🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: comp.org.usrgroup
4 messages
4 total messages Started by mak Wed, 28 Feb 1990 20:16
Re: POSIX Update: Shell and Utilities.
#53
Author: mak
Date: Wed, 28 Feb 1990 20:16
93 lines
4626 bytes
At Date: 19 Feb 90 18:29:46 GMT , peter@ficc.uu.net (Peter da Silva) said:
--
--I just read in the recent /usr/group "white paper" that...
--
--	Earlier drafts de-emphasised the !test! command in favor of
--	a new ![[ ]]! command. This new invention was discarded in the
--	current draft (Draft 9), but a new shell keyword, !, was added
--	to negate the return value of a pipeline to make test easier
--	to use for complex expressions.
--
--I fail to understand what was wrong with the existing ![ ]! command.
--
--Could someone elaborate?

Peter,

I am not sure what all those !'s mean. But in re-reading the
first (included) paragraph, my guess is that I should refer you back
to Draft 8. Page 128, beginning with line 1063, reiterates
some of Dave's reasons for the [[ ]] vs. test. I remember
that he based this rationale on a study about shell programming
errors (internal to Bell Labs?).

Korn's data showed that a new, quoting syntax, ala
[[ ]], would be less prone to programming error, and it could be made to
have a richer set of tests. Unfortunately, the quoting itself is a
problem for standardization. (see my postscript.)

But there really is nothing there which explains why [[ ]] instead of
[ ], per se. I believe that it separates [ ] and [[ ]] semantics so
extra goodies can be put into the shell "language."

Also, I do note that [ ] is missing from Bourne's paper on the
UNIX shell, BLTJ, July/Aug '78. All that means (to me) is that [ ]
MAY not have been in bourne shell. (Please note the dichotomatic use
of the terms, bourne shell and  /bin/sh. My friends at Summit tell me
that these are different shells.)

I just hope that I was able to shed some light on the subject.
By the way, tell me what is this "white paper!"

= Bob Makowski

P.S. Between Draft 8 and Draft 9, the [[ ]] and (( )) were removed to
resolve balloting objections.

The Balloting Group has realized that the [[ ]] and the (( )) syntax 
break compatability with BOURNE, /bin/sh, csh: the problem is not so 
much the [[ ]] or (( )), per se. It's what goes inside these delimiters. 

o ksh required new semantics for shell meta-characters

	Let's start with * : it has a new meaning inside the (( )).
	If a ksh script is run by /bin/sh or csh, * could be filename
	expanded; so for ksh to work these math expressions, (( )) has to
	quote the file metacharacters. (In fact, Draft 8, line 721, p122,
	says (( )) behaves as if (" ") quoting were applied.)

	Obviously, (( )) does not have this semantic in csh or /bin/sh.

	For [[ ]], the situation is more or less the same; e.g., in Draft
	8, [[ ]], as well as (( )), support > and < for comparisions.
	Again, ksh quotes inside [[ ]], whereas /bin/csh and csh would not.

o counterindications: a thought experiment

	So SUPPOSE that a ksh script were run by /bin/sh. (There are only
	a million binary copies, so it might be important case ;-)

	So SUPPOSE that /bin/sh interpreted * , < , > from inside (( ))
	and [[ ]].

	With * in a math expression, there'd be filenames; With > in [[
	]], a file would be clobbered to a null length.

o unwinding and implementations

	I tried these on SVR3.2 and grammar does not "unwind" enough to
	interpret > or < as re-direction. But this is an "accident" of the
	implementation; I do not recall a specification requiring this to
	happen for POSIX compliant systems. Moreover, there is a strong
	predeliction against POSIX' requiring implementations.
	(Thankfully, this has much to do with the IEEE, per se, but it's
	also due to the DEC suit over the SVID in AFCAC.)

-- 
= Mak :.................................................................:
: [Americans] have a philosophical method ...  To evade the bondage of  :
: system and habit, of family maxims, class opinions, and in some       :
: degree, of national prejudices; to accept tradition, only as a lesson :
: to be used in doing otherwise and doing better; ...                   :
: ............................................Alexis de Tocueville, 1790:
Re: POSIX Update: Shell and Utilities.
#54
Author: Henry Spencer
Date: Thu, 01 Mar 1990 17:11
15 lines
1161 bytes
In article <2567@mbf.UUCP> uunet!attmail!mak writes:
>Also, I do note that [ ] is missing from Bourne's paper on the
>UNIX shell, BLTJ, July/Aug '78. All that means (to me) is that [ ]
>MAY not have been in bourne shell. (Please note the dichotomatic use
>of the terms, bourne shell and  /bin/sh...

It depends on what you mean by "in". :-)  The original Seventh Edition
test(1), which was not part of the shell, was prepared to cope properly
with being invoked under the name `['.  However, as I recall it didn't
actually exist under that name in /bin as distributed, so there is some
room for doubt about whether this feature was fully operational.  But
it does seem to have come from Steve Bourne.
-- 
MSDOS, abbrev:  Maybe SomeDay |     Henry Spencer at U of Toronto Zoology
an Operating System.          | uunet!attcan!utzoo!henry henry@zoo.toronto.edu
Re: POSIX Update: Shell and Utilities.
#56
Author: Peter da Silva
Date: Thu, 01 Mar 1990 17:23
40 lines
1941 bytes
[Time for a mvgroup to comp.org.uniforum? :->]

> I am not sure what all those !'s mean.

Oh, it's a convention I picked up somewhere to represent "quoted program
text".

> But in re-reading the
> first (included) paragraph, my guess is that I should refer you back
> to Draft 8. Page 128, beginning with line 1063, ...

Where can I get these drafts?

> Korn's data showed that a new, quoting syntax, ala
> [[ ]], would be less prone to programming error, and it could be made to
> have a richer set of tests. Unfortunately, the quoting itself is a
> problem for standardization. (see my postscript.)

Good idea, and I can see why they would want to use [[ ]] instead of [ ]
for that... nothing worse than a silent change. If that's the case then
I guess that answers my question. [ ] isn't necessarily going away, it's
just not relevent to this point.

> I just hope that I was able to shed some light on the subject.

Yes Thanks.

> By the way, tell me what is this "white paper!"

POSIX Update: Shell and Utilities/An Update on the IEEE P1003.2/Shell
and Utilities/Working Group//December 1989//by/Hal Jespersen.

I like the $[expr] syntax, by the way. Is there any interest in adding
the korn shell $(command) syntax as a (nestable) synonym for grave
accents?
-- 
 _--_|\  Peter da Silva. +1 713 274 5180. <peter@ficc.uu.net>.
/      \
\_.--._/ Xenix Support -- it's not just a job, it's an adventure!
      v  "Have you hugged your wolf today?" `-_-'
Re: POSIX Update: Shell and Utilities.
#55
Author: WU SHI-KUEI
Date: Fri, 02 Mar 1990 15:51
7 lines
811 bytes
My AT&T Release 5.0 (June 1982) manual page for 'test' reads in part:

WARNING
     In the second form of the command (i.e., the one that uses [], rather
     than the word *test*), the square brackets must be delimited by
     blanks.
     Some UNIX systems do not recognize the second form of the command.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads