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


113

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


1
我唯一知道的每个人都应该遵循的是,所有大写名称都应该保留给shell。不要使用它们来避免意外破坏重要的东西,例如PATHHOME将来外壳可能保留的任何东西。
jw013

3
实际上,所有大写名称通常用于环境变量。一些变量(例如PATH)由外壳程序解释,而其他变量(例如LANGUAGE或PRINTER)则可以由其他程序解释,但是它们之间没有其他特殊之处。
jlp 2012年

“环境变量”确实是专有名称,我将在答案中包括它。
jippie 2012年

尽管不具权威性,但此Google指南有很好的建议:google.github.io/styleguide/shell.xml。它建议只对常量和导出变量使用所有大写字母,对其他所有内容使用大写字母。就个人而言,我喜欢为全局对象提供骆驼保护套,因为没有人推荐这样做,这降低了命名冲突的可能性。另外,我喜欢他们的阅读方式。
Binary Phile '16

Answers:


111

操作系统或Shell启动脚本等引入的环境变量或Shell变量通常都在中CAPITALS

为防止您自己的变量与这些变量冲突,请使用lower case


32
lower_case下划线分隔还是camelCase
加勒特·霍尔

3
@GarrettHall完全取决于您。一旦你拿起一根棍子。一致性比实际选择更重要。
jw013

2
口味问题?我个人喜欢C样式,camelCase因为它更短并且不使用难看的下划线。口味,风格……
jippie 2012年

19
口味问题?我个人喜欢将下划线分开,以便于阅读。
janos

4
为了完整起见,环境变量是以往没有全部大写的shell变量名的唯一一类-这一规则也适用于内置命令(如PWDPS4BASH_SOURCE)。
Charles Duffy 2015年

62

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

作为变量名的摘要:

变量名:小写,带有下划线以分隔单词。例如:my_variable_name

常量环境变量名称:所有大写字母,用下划线分隔,在文件顶部声明。例如:MY_CONSTANT


1
上面的链接是已经死了,但我相信这是它链接到:google.github.io/styleguide/shell.xml
萨姆

1
@山姆,谢谢。是的,那是。大约是Google停止使用googlecode.com的时候了。大声笑
Anonsage '16

1
难道永远做谷歌说?;-)
tim.rohrer

1
这些约定只是Google自己的开源项目的约定:尽管它们可能是很好的规则,但并不能适用于所有项目。
smonff

1

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

  1. 灵活:您可以使用大写和小写(例如MY_CONSTANTmy_variable);
  2. 一致:数字可以分开以使数字更易读(例如1_000_000_000),并且许多编程语言均支持此功能;
  3. 通用:在正则表达式\w处理下划线(如文字字符和数字([a-zA-Z0-9_]))时通用。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.