Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从ENV变量读取时的Bash脚本局部变量命名_Bash_Shell - Fatal编程技术网

从ENV变量读取时的Bash脚本局部变量命名

从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

对于bash脚本,我通常遵循本地变量应为小写,环境变量应为大写的规则。这样可以避免意外地覆盖环境变量。我正在编写一个Tomcat启动脚本,我创建了一个Tomcat_日志变量,部分来自环境变量

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变量名。