shell 脚本中行注释字符“#”与实际注释开头之间的空格

shell 脚本中行注释字符“#”与实际注释开头之间的空格

存在 shell 脚本,其中注释的井号和实际注释之间有一个空格

# a comment at the beginning of a line
echo foo # a comment trailing after a command

以及其他没有的

#another comment at the beginning of a line
echo bar #another comment trailing after a command

这个决定是否会对脚本的实际执行产生某种影响,或者它(只是)是一个编码风格问题?

答案1

没有非风格上的差异;POSIX 指定当识别 shell 中的令牌时,

如果当前字符是“#”,则该字符以及下一个 <newline> 之前(但不包括)的所有后续字符都将作为注释被丢弃。结束行的 <newline> 不被视为注释的一部分。

答案2

我不知道有哪个 shell 中的空格很重要。例如,其中man bash说道:

   In a non-interactive shell, or an interactive shell in which
   the interactive_comments option to the shopt builtin is enabled
   (see SHELL BUILTIN COMMANDS below), a word beginning with #
   causes that word and all remaining characters on that line to
   be ignored.

它特别指出全部# 后面的字符将被忽略。

就我个人而言,我更喜欢在#后面加一个空格。

相关内容