Shell 脚本中,单行注释的标准写法是使用井号 #,多行注释没有原生语法,通常通过空命令配合 Here Document 实现。
先说结论:单行注释直接用 #,大段注释推荐 :<<'EOF' 结构。
- 适合 日常脚本编写与维护
- 注意 引号防止变量意外展开
- 建议 避免使用函数法伪装注释
标准单行注释
使用 # 符号,解释器会忽略该行 # 之后的所有内容。这是 POSIX 标准的一部分,兼容性最好。
# 行首注释
# 这是一个注释echo "hello" # 行尾注释,命令与 # 之间需有空格
多行注释的最佳实践
Shell 没有原生多行注释符号。推荐使用空命令 : 配合 Here Document。: 是 builtin 空命令,什么都不做但返回成功状态。务必给 EOF 加上单引号,防止变量被替换。
: <<'EOF'
这是一段注释
变量 $HOME 不会被展开
EOF
验证与排查
1. 语法检查:使用 bash -n 脚本名.sh 确保没有语法错误。
2. 执行验证:运行脚本,确认注释块内命令无输出。
3. 调试模式:使用 bash -x 脚本名.sh 观察执行流程,确认注释块被跳过。
# 示例:调试模式输出
+ echo hello
hello
# 注释块内的命令不会出现在 + 开头行中
常见风险与坑
1. Shebang 位置:#! 必须放在文件第一行,前面不能有空格或空行。
2. EOF 格式:结束符 EOF 必须顶格写,不能有空格。
3. 变量展开:: <<EOF 不加单引号会导致 $VAR 被提前替换,敏感信息可能泄露。
4. 函数法风险:定义函数包裹注释内容仍会被语法检查解析,若内部有语法错误会导致脚本无法加载,不推荐使用。
参考资料
- GNU Bash Manual: https://www.gnu.org/software/bash/manual/
原文链接:https://www.zjcp.cc/ask/11044.html
