推荐的约定/编码风格

Recommended convention / coding style

我正在重构一些 unix shell 脚本 并在我们的代码中发现许多不一致和不同的风格

例如:

somevar="${item1},${item2}"
somevar=${item1}","${item2}
somevar="$item1,$item2"

是否有 unix shell 脚本的编码风格指南?或像 C++ 的 clang-format 这样的格式化程序

[编辑] 请注意,我不是在征求个人风格偏好或个人意见!我正在寻找行业标准文档、广泛使用的风格指南或流行的工具。

我曾在几家拥有自己的风格指南的公司工作过,但现在大多数公司都在使用 Google 的风格指南。如果您没有自己开发的风格指南,那么 Google 的很好,发布在这里:https://google.github.io/styleguide/shell.xml

我亲自使用 shell 检查插件 vim 检查我的 shell 脚本,但它可以在网络上和其他编辑器上使用。您可以使用它并在此处获取下载:https://www.shellcheck.net/

由于 word splitting 不会发生在变量赋值的上下文中,您可以使用:

somevar=${item1},${item2}

我个人比较喜欢用

somevar="${item1},${item2}"

这些引号并没有什么坏处,而且 - imo - 增加了可读性。


关于 ${var}$var。当变量名称可能包含下划线时,这很重要,例如 "$foo_bar"。这是什么意思?变量 $foo 加上文字字符串 _bar?还是扩展变量$foo_bar?因此,我会使用 ${var} 来避免这种情况。