RFC: use readable $(cmd) syntax instead of unreadable `cmd`
The following message is a courtesy copy of an article
that has been posted to gmane.linux.debian.devel.general as well.
FOREWORD
I have seen following construct to be used in shell-context
(makefiles, sh-scripts, Perl):
`cmd` [1]
However, the POSIX standard and SUSv[23] declares alternative way of
accomplishing the same with in *sh context:
$(cmd) [2]
I would see following problems quality wise with [1]:
- The backtick version is not easily readable in high resolution screens
or in terminals with small fonts
- There may be problems in distinguishing character ' from ` with sme
particularly selected font.
- The missing backtick is hard to find in highly quoted context, where
single, double quotes and backticks play the code tune.
- The backtick is awkwardly located in some keyboards. (possible
orphan/adopt/NMU maintenance problem)
- Lastly, isually impaired people have problems with non-easily
dintinguishable content. ' and ` fall into this category.
All Debian *sh compatible shells support $() and are thus POSIX/SUS
compliant in this respect.
BUG REPORTS -- AND REPONSES
I have reported bugs against backtick and suggested to change to use
the more readable alternative. The result was surprising. To quote
one message (bug closed reasoning):
"If your development environment cannot display ` differently than ' ,
you need to get a new one."
I'm askinf if it is ok to to reopen such bugs based of better QA
aspects. Possibly by providing patches if the maintainer is busy
elsewhere to handle such a "minor issue" from his perspective.
Jari
REFERENCES
The Single UNIX Specification, Version 2 (SUSv2):
"Shell Command Language"
<http://www.opengroup.org/onlinepubs/007908799/xcu/chap2.html>
...The input characters within the quoted string that are
also enclosed between "$(" and the matching ")" will not
be affected by the double-quotes, but rather define that
command whose output replaces the $(...)
Reply to: