Bash:美元括号中的两个命令的行为不同

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单独工作。

答案1

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

echo $(id -un)

以及它的错误消息:

id: –un: No such user

两个“连字符”不同,第二个连字符稍长一些。错误消息似乎是从原始命令中复制粘贴的,但命令是重新输入的。原始命令很可能包含错误的连字符。这解释了为什么没有人能够重现错误消息。

此类错误大多有两个原因:

  • 代码是从网站上复制而来的,使用错误的格式化程序/语法高亮器进行排版。

  • 代码是在不合适的编辑环境中输入的,例如 Microsoft Word。Word 可能会将您输入的内容更改为排版更佳但出乎意料的变体,例如不同的连字符、不同的引号或其他空格符号。


巧的是,刚刚有一场人气竞赛代码高尔夫其中一个答案使用了类似的“技巧”来产生甚至不可见的差异:https://codegolf.stackexchange.com/a/23258/16287

相关内容