我试图在一个 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
运行测试脚本:。测试.sh
result:
postgres:latest
not equals
现在用命令行设置环境变量:
export DB1_IMAGE="postgres:latest"
现在再次运行测试脚本:。测试.sh
result:
postgres:latest
equals
总结:当使用 bash 脚本设置环境变量时,该值将无法在另一个 bash 脚本中进行等于比较。当使用命令行设置相同的环境变量时,它会通过 equals 测试。我无法解释这是为什么。我觉得我错过了一些明显的东西。 == 测试怎么会失败?是否以某种方式插入了不可打印的字符?请帮忙..
答案 0 :(得分:0)
感谢@glennjackman,这是因为 bash 脚本文件 (setenv.env) 是 DOS 格式而不是 UNIX 格式。这意味着它有 \r\n 换行符,这会导致将隐藏字符插入到环境变量中。修复方法是在文件上运行 dos2unix (sudo apt install dos2unix)