【发布时间】:2022-12-08 09:26:49
【问题描述】:
我想创建一个 bash 函数来在调用时加载某些环境变量,但我收到错误 loadenv:4: = not found。此函数以及变量 DEV_ENVIRONMENT_NAME, DEV_ENVIRONMENT_DIRECTORY, PROD_ENVIRONMENT_NAME and PROD_ENVIRONMENT_DIRECTORY 是在我的 .zshrc 文件中定义的,因此导出的变量在我运行该函数的 bash 会话中可用。但我不知道我提到的错误意味着什么。
function loadenv() {
environment=$1
envname=""
envdir=""
if [ "$environment" == "dev" ]
then
echo "Assuming development credentials"
envname="$DEV_ENVIRONMENT_NAME"
envdir="$DEV_ENVIRONMENT_DIRECTORY"
elif [ "$environment" == "prod" ]
then
echo "Assuming production credentials"
envname="$PROD_ENVIRONMENT_NAME"
envdir="$PROD_ENVIRONMENT_DIRECTORY"
fi
if [[ -z $envname || -z $envdir ]]
then
echo "Credentials for $environment not properly configured"
return 1
else
export APP_ENVIRONMENT="$envname"
export APP_DIRECTORY="$envdir"
return 0
fi
echo "Environment '$environment' not valid"
return 1
}
【问题讨论】:
-
你提到
.zshrc。那么你是用bash还是zsh来运行这个脚本? -
您正在使用一些特定于 bash 的语法,这在
zsh中可能不起作用。比如function命令定义一个函数,[中用==代替=。 -
当您尝试将
==用作[ ]测试表达式中的运算符时,zsh 会说这个相当神秘的错误。=是该上下文中正确的比较运算符(尽管 bash 容忍==作为非标准同义词)。
标签: bash environment-variables