从ENV变量读取时的Bash脚本局部变量命名
对于bash脚本,我通常遵循本地变量应为小写,环境变量应为大写的规则。这样可以避免意外地覆盖环境变量。我正在编写一个Tomcat启动脚本,我创建了一个Tomcat_日志变量,部分来自环境变量从ENV变量读取时的Bash脚本局部变量命名,bash,shell,Bash,Shell,对于bash脚本,我通常遵循本地变量应为小写,环境变量应为大写的规则。这样可以避免意外地覆盖环境变量。我正在编写一个Tomcat启动脚本,我创建了一个Tomcat_日志变量,部分来自环境变量 tomcat_log=${TOMCAT_HOME}/logs/tomcat-initd.log 现在我想读入一个可能带有默认值的环境变量。这应该是大写还是小写 # uppercase CONNECTOR_PORT="${CONNECTOR_PORT:-8080}" # lowercase connect
tomcat_log=${TOMCAT_HOME}/logs/tomcat-initd.log
现在我想读入一个可能带有默认值的环境变量。这应该是大写还是小写
# uppercase
CONNECTOR_PORT="${CONNECTOR_PORT:-8080}"
# lowercase
connector_port="${CONNECTOR_PORT:-8080}"
它是一个局部变量,但也可以从环境变量中读取。我很好奇这里的人们倾向于遵循哪种惯例。正如您已经说过的,在脚本中使用小写变量名是个好主意 如果我遵循你的惯例,那么它应该是小写的。从处理脚本中evironment变量中的数据时起,数据就从其原始范围“分离”
最后,我会说这是一个品味的问题,可能是主观的,取决于观点。将其简化。原因如下: 如果您这样做:
CONNECTOR_PORT="${CONNECTOR_PORT:-8080}"
connector_port="${CONNECTOR_PORT:-8080}"
…那么您就不知道CONNECTOR\u PORT
变量是否标记为导出为未导出。可能它是作为环境变量传入的,并设置了该标志,或者它不是,也不是。如果您希望遵循约定,保持行为一致,并希望保留大写变量名,则需要强制自己导出:
export CONNECTOR_PORT="${CONNECTOR_PORT:-8080}"
如果您这样做:
CONNECTOR_PORT="${CONNECTOR_PORT:-8080}"
connector_port="${CONNECTOR_PORT:-8080}"
…很明显,
connector\u-port
不会被标记为导出到子流程,无论您的父级是否将connector\u-port
导出给您。一个次要的考虑是,小写环境变量名不会有干扰标准工具和实用程序行为的风险。出于这个原因,我倾向于使用小写或混合大小写的shell变量名。