shell 脚本中注释的正确写法是什么?

文章导读
Shell 脚本中,单行注释的标准写法是使用井号 #,多行注释没有原生语法,通常通过空命令配合 Here Document 实现。
📋 目录
  1. 标准单行注释
  2. 多行注释的最佳实践
  3. 验证与排查
  4. 常见风险与坑
  5. 参考资料
A A

Shell 脚本中,单行注释的标准写法是使用井号 #,多行注释没有原生语法,通常通过空命令配合 Here Document 实现。

先说结论:单行注释直接用 #,大段注释推荐 :<<'EOF' 结构。

  • 适合 日常脚本编写与维护
  • 注意 引号防止变量意外展开
  • 建议 避免使用函数法伪装注释

标准单行注释

使用 # 符号,解释器会忽略该行 # 之后的所有内容。这是 POSIX 标准的一部分,兼容性最好。

# 行首注释
# 这是一个注释

echo "hello" # 行尾注释,命令与 # 之间需有空格

多行注释的最佳实践

Shell 没有原生多行注释符号。推荐使用空命令 : 配合 Here Document。: 是 builtin 空命令,什么都不做但返回成功状态。务必给 EOF 加上单引号,防止变量被替换。

shell 脚本中注释的正确写法是什么?
: <<'EOF'
这是一段注释
变量 $HOME 不会被展开
EOF

验证与排查

1. 语法检查:使用 bash -n 脚本名.sh 确保没有语法错误。

2. 执行验证:运行脚本,确认注释块内命令无输出。

shell 脚本中注释的正确写法是什么?

3. 调试模式:使用 bash -x 脚本名.sh 观察执行流程,确认注释块被跳过。

# 示例:调试模式输出
+ echo hello
hello
# 注释块内的命令不会出现在 + 开头行中

常见风险与坑

1. Shebang 位置:#! 必须放在文件第一行,前面不能有空格或空行。

2. EOF 格式:结束符 EOF 必须顶格写,不能有空格。

shell 脚本中注释的正确写法是什么?

3. 变量展开:: <<EOF 不加单引号会导致 $VAR 被提前替换,敏感信息可能泄露。

4. 函数法风险:定义函数包裹注释内容仍会被语法检查解析,若内部有语法错误会导致脚本无法加载,不推荐使用。

参考资料