NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

bin/53201: /bin/sh syntax error for ${var-xyz} with literal \n in xyz

>Number:         53201
>Category:       bin
>Synopsis:       /bin/sh syntax error for ${var-xyz} with literal \n in xyz
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    bin-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Apr 21 21:25:00 +0000 2018
>Originator:     Robert Elz
>Release:        NetBSD 8.99.14
System: NetBSD 8.99.14 NetBSD 8.99.14 (GENERIC) #3: Fri Apr 13 15:19:55 ICT 2018 amd64
Architecture: x86_64
Machine: amd64
	Currently (and from time immemorial) /bin/sh does:

	[jinx]$ var-${anything-abc
	sh: 1: Syntax error: Missing '}'

	That's incorrect.   POSIX says (XCU 2.3 (Token Recognition for sh))
	rule 5:

		If the current character is an unquoted '$' or '`',
		the shell shall identify the start of any candidates
		for parameter expansion (Section 2.6.2) [...]

		The shell shall read sufficient input to determine the
		end of the unit to be expanded [...]

		The characters found from the beginning of the substitution
		to its end, allowing for any recursion necessary to recognize
		embedded constructs, shall be included unmodified in the
		result token, [...]

	Just type the above to /bin/sh

	Compare with /bin/ksh bash yash zsh ...
	(These issue PS2 when the \n appears, then continue
	collecting the remainder of the ${} expression.)

	Other ash derived shells have the same problem

	Coming soon (it is a trivial change.)
	ATF tests to test for this will appear first (as soon as
	I get the PR number from this PR to refer to.)

Home | Main Index | Thread Index | Old Index