karl@IMA.IMA.ISC.COM (Karl Heuer) (03/22/90)
From: karl@IMA.IMA.ISC.COM (Karl Heuer) This came up in comp.org.usrgroup, but I think this is a better place. Observation: The shell, considered as a programming language, has a string datatype but does not have adequate facilities for embedding nonprinting characters in a string constant. As a result, several commands (date, echo, paste, prs, stty, tr) have evolved (largely incompatible) notations for translating escape sequences into such nonprinting characters. Opinion: A much cleaner solution would be to have a simple shell syntax which causes the nonprinting characters to be embedded into the argument string, so that it would be transparent to the program. Proposal: Reserve $\ (dollar-backslash) as a new entity that begins a C-like escape, so we would have $\a $\b $\t $\n $\v $\f $\r, octal escapes like $\177, and hex escapes like $\x7F. Alternative proposal (from a suggestion by Eric Gisin, eric@mks.com): make a new string quoting mechanism, $"...", which is just like "..." except that, in addition to the four current backslash escapes \$ \` \" \\ that are permitted inside double quotes, all the C-like escapes \a etc. would be recognized. I'm told that the POSIX shell does not address this perceived deficiency. I hope it's not too late for this to be corrected. Karl W. Z. Heuer (karl@ima.ima.isc.com or harvard!ima!karl), The Walking Lint Volume-Number: Volume 19, Number 20
std-unix@longway.TIC.COM (Moderator, John S. Quarterman) (03/23/90)
From: Maarten Litmaath <uunet!cs.vu.nl!maart> In article <589@longway.TIC.COM>, karl@IMA.IMA.ISC.COM (Karl Heuer) writes: )... )Proposal: Reserve $\ (dollar-backslash) as a new entity that begins a C-like )escape, so we would have $\a $\b $\t $\n $\v $\f $\r, octal escapes like )$\177, and hex escapes like $\x7F. ) )Alternative proposal (from a suggestion by Eric Gisin, eric@mks.com): make a )new string quoting mechanism, $"...", which is just like "..." except that, in )addition to the four current backslash escapes \$ \` \" \\ that are permitted )inside double quotes, all the C-like escapes \a etc. would be recognized. Good idea! But why not allow *both* syntaxes? The first would be a simple form of the second: $\a equals $"\a" ...just like: $foo and ${foo} When you only want a single control character, you'd use the first form, when you want some escape codes in a row (possibly containing `normal' characters as well), you'd use the second form. -- 1) Will 4.5BSD have wait5()? |Maarten Litmaath @ VU Amsterdam: 2) Sleep(3) should be sleep(2) again.|maart@cs.vu.nl, uunet!mcsun!botter!maart Volume-Number: Volume 19, Number 23