Bash 脚本未正确设置环境变量



我试图将bash脚本中的环境变量设置为由另一个bash脚本读取,但它们没有正确设置。我在Ubuntu 20.04上。

在脚本中设置环境变量:

setenv.env
export DB1_IMAGE="postgres:latest"

运行它:。setenv.env

test it:  echo $DB1_IMAGE
result: postgres:latest

测试环境变量值的脚本:

test.sh
#!/bin/bash
echo $DB1_IMAGE
if [[ $DB1_IMAGE ==  "postgres:latest" ]]
then
echo "equals"
else
echo "not equals"
fi

运行测试脚本:。test.sh

result:  
postgres:latest
not equals

现在用命令行设置环境变量:

export DB1_IMAGE="postgres:latest"

现在再次运行测试脚本:。test.sh

result:  
postgres:latest
equals

摘要:当使用bash脚本设置环境变量时,该值将在另一个bash脚本中的equals比较中失败。当使用命令行设置相同的环境变量时,它将通过equals测试。我无法解释为什么会这样。我觉得我错过了一些显而易见的东西。==测试怎么会失败?是否以某种方式插入了无法打印的字符?请帮忙。。

感谢@glennjackman,原因是bash脚本文件(setenv.env(是DOS格式的,而不是UNIX格式的。这意味着它有换行符,\r\n这会导致将隐藏字符插入到环境变量中。修复方法是在文件(sudo apt-install dos2unix(上运行dos2unix

相关内容

  • 没有找到相关文章

最新更新