Answers:
按照惯例,环境变量(PAGER
,EDITOR
,...)和内部shell变量(SHELL
,BASH_VERSION
,...)都大写。所有其他变量名应小写。
请记住,变量名称区分大小写;该约定避免了意外覆盖环境和内部变量。
遵循该约定,您可以放心,您不需要知道UNIX工具或shell使用的每个环境变量,以免覆盖它们。如果是您的变量,则将其小写。如果导出,则将其大写。
USER="username"
在bash脚本中使用,而不是通过ssh自动化一些远程命令user="username"
。啊! 很高兴我现在知道了!
始终遵循的任何命名约定都将有所帮助。以下是一些有关shell变量命名的有用提示:
将所有大写和下划线用于导出的变量和常量,尤其是在多个脚本或进程之间共享它们时。在适用的情况下,请使用通用前缀,以使相关变量脱颖而出,并且不会与Bash内部变量大写冲突。
例子:
JOB_HOME
JOB_LOG
JOB_TEMP
JOB_RUN_CONTROL
LOG_DEBUG
LOG_INFO
LOG_ERROR
STATUS_OK
STATUS_ERROR
STATUS_WARNING
对于范围限定于单个脚本或块的所有变量,请使用“ 小写字母 ”(全部小写和下划线)。
例子: input_file
first_value
max_amount
num_errors
当局部变量与环境变量有某种关系时,请使用混合大小写,例如: old_IFS
old_HOME
对于“私有”变量和函数,请使用前导下划线。如果您曾经编写过一个Shell库,而其中一个库文件或多个文件中的函数需要共享变量,而又与任何与主代码中类似名称的文件都不冲突,则这尤其重要。
例子: _debug
_debug_level
_current_log_file
避免骆驼案。这样可以最大程度地减少因拼写错误而引起的错误。请记住,shell变量区分大小写。
例如:inputArray
thisLooksBAD
,numRecordsProcessed
,veryInconsistent_style
也可以看看:
我做你所做的。我怀疑是否有权威资料,但似乎是相当普遍的事实上的标准。
cat /tmp/location.txt
实际上,术语“环境变量”似乎是最近才出现的。Kernighan和Pike在1984年出版的经典著作“ UNIX编程环境”中只谈到“ shell变量”-索引中甚至没有“环境”条目!
我倾向于将ALL_CAPS用于环境和全局变量。当然,在Bash中没有真正的变量范围,因此有很大一部分变量用作全局变量(主要是设置和状态跟踪),而相对较少的“局部变量”(计数器,迭代器,部分构造的字符串和临时变量)