Bash:以美元为圆括号的两个命令不具有相同的行为

在Bash中,我并不是为了解释为什么,

  • echo $(hostname --fqdn)作品,
  • echo $(id -un)不( id: –un: No such user )。

反引号给出了相同的结果。

使用这个符号是否有一些好的做法? id命令是否有这样一个特殊的使用方法?

下面有些细节看起来适用于其他系统:

  • lsb_release -a :SUSE Linux Enterprise Server 11(x86_64),
  • which id :/ usr / bin / id,
  • id -un独自工作。

我注意到发布的命令之间的细微差别:

echo $(id -un)

和它的错误信息:

id: –un: No such user

两个“连字符”是不同的,第二个是更长一点点。 它看起来像是从原来的复制和粘贴的错误消息,但命令重新input。 最初的命令很可能包含错误的连字符。 这就解释了为什么没有人能够重现错误信息。

这种错误主要有两个原因之一:

  • 代码是从网站上复制的,使用坏的格式化程序/语法高亮显示来排版。

  • 代码是在不适当的编辑环境中input的,如Microsoft Word。 单词可能会将您input的内容更改为更好的印刷forms,但意想不到的变体forms(如不同的连字符,不同的引号或其他空格符号)。


巧合的是, Codegolf只是一个受欢迎的比赛挑战,一个答案使用了类似的“技巧”来产生一个甚至不可见的差异: https : //codegolf.stackexchange.com/a/23258/16287