shell 脚本中的变量是否有命名约定?

Gar*_*all 176 shell bash shell-script variable

大多数语言都有变量的命名约定,我在 shell 脚本中看到的最常见的样式是MY_VARIABLE=foo. 这是惯例还是仅适用于全局变量?脚本本地的变量呢?

jip*_*pie 161

由操作系统、shell 启动脚本或shell 本身等引入的环境变量或shell 变量通常都在CAPITALS.

为了防止您自己的变量与这些变量发生冲突,使用lower_case变量名是一个很好的做法。

  • `lower_case` 下划线分隔还是 `camelCase`? (48认同)
  • 口味问题?我个人喜欢下划线分隔,更容易阅读。 (32认同)
  • 为完整起见,环境变量并不是传统的全大写 shell 变量名称的唯一类别——此规则也适用于内置函数(如 `PWD`、`PS4` 或 `BASH_SOURCE`)。 (8认同)
  • @GarrettHall 这完全取决于你。一旦你选择了一根棍子。一致性比实际选择更重要。 (7认同)
  • 口味问题?我个人喜欢 C 风格的 `camelCase`,因为它更短而且不使用丑陋的下划线。口味,风格,... (4认同)

小智 105

是的,bash 有完整的代码样式约定,包括变量名称。例如,这里是 Google 的Shell 样式指南

作为变量名称的摘要:

变量名:小写,用下划线分隔单词。前任:my_variable_name

常量环境变量名称:全部大写,用下划线分隔,在文件顶部声明。前任:MY_CONSTANT

  • 这些约定只是谷歌针对他们自己的开源项目的约定:虽然它们可能是非常好的规则,但它不能适用于*所有*项目。 (8认同)

小智 6

下划线分隔单词似乎是最好的方法。
当我可以自由选择时,我有几个理由更喜欢snake_case而不是camelCase:

  1. 灵活:您可以使用大写和小写(例如MY_CONSTANTmy_variable);
  2. 一致:可以将数字分开以使数字更易读(例如1_000_000_000),并且许多编程语言都支持此功能;
  3. 常见:在正则表达式\w处理下划线(如单词字符和数字 ( [a-zA-Z0-9_]))时很常见。

  • 我认为我们应该避免试图将风格决定(或一般观点)合理化,因为其基本原理通常是脆弱的,并且可以毫不费力地左右摇摆。(此外,它使人们两极分化,经常煽动宗教战争和在非物质问题上浪费时间。)特别是在回复中:你的理由,“驼峰命名法”并不排除#2,并且通过将大写字母视为额外的单词边界,可以轻松缓解#3。回复:#1,“LOUD_SNAKE”没有理由不能与“camelCase”一起使用——这是一种常见的组合,前者通常用于常量/全局变量。 (3认同)