首页 > 工具箱 > Shell 格式化

Shell 脚本格式化

Shell 里空白是有语义的,所以这里只重排每行开头的缩进,行内的内容一个字符都不动。引号里、here-doc 里的东西原样保留。

顺带提醒几个 Shell 的坑

  • 变量引用永远加双引号。rm -rf $dir/$dir 为空时会变成 rm -rf /,写成 "$dir" 就只是报个错。这是 Shell 最著名的事故来源。
  • 脚本开头写 set -euo pipefail出错就停、用未定义变量就停、管道中间失败也算失败。默认行为是出了错继续往下跑,非常危险。
  • [[ ]][ ] 好用,支持 &&、正则匹配,且不做分词。但它是 bash 扩展,#!/bin/sh 的脚本里不能用。
  • here-doc 的结束标记必须顶格(除非用 <<-,那样可以用 Tab 缩进,注意只能是 Tab 不能是空格)。本工具不会去动 here-doc 里的任何一行,包括结束标记。
  • 想做真正的静态检查用 ShellCheck,那是另一个量级的工具。这里只管缩进。
  • 相关:Linux 常用命令PHP 格式化Cron 表达式Chmod 计算代码转图片