shfmt
shfmt 格式化 shell 程序
shfmt --help
usage: shfmt [flags] [path ...]
shfmt 格式化 shell 程序。
如果唯一的参数是破折号('-')或没有给出参数,将使用标准输入。
如果给定路径是目录,则将使用在该目录下找到的所有 shell 脚本。
--version 显示版本并退出
-l, --list 列出格式与 shfmt 不同的文件
-w, --write 将结果写入文件而不是标准输出
-d, --diff 格式不同时显示差异变化
-s, --simplify 简化代码
-mn, --minify 缩小代码以减小其大小 (implies -s)
Parser options:
-ln, --language-dialect str bash/posix/mksh/bats, default "auto"
-p, --posix shorthand for -ln=posix
--filename str provide a name for the standard input file
Printer options:
-i, --indent uint 0 表示制表符(默认),>0 表示空格数
-bn, --binary-next-line 像 && 和 | 这样的二进制操作可能另起一行
-ci, --case-indent 缩进 case 语句
-sr, --space-redirects 重定向运算符后跟一个空格
-kp, --keep-padding 保持列对齐填充
-fn, --func-next-line 函数左大括号放在单独的一行
Utilities:
-f, --find 递归查找所有 shell 文件并打印路径
--tojson 将语法树作为类型化的 JSON 打印到标准输出
For more information, see 'man shfmt' and https://github.com/mvdan/sh.
参考其他语言的规范,我选择了 4 个空格、重定向后留空格
shfmt -d -i 4 -sr main.sh