我很头疼为什么我的脚本在 Windows 子系统 Linux 下不能按预期工作。
我在商店购买的版本:(Debian GNU/Linux 9.6 (stretch)
我也尝试过 ubuntu,结果相同)
我的 bash 版本是:GNU bash, version 4.4.12(1)-release (x86_64-pc-linux-gnu)
这是我的基本脚本,仅用于显示问题:
PROJECT_ENV="development"
echo $PROJECT_ENV
compose_file="docker-compose.${PROJECT_ENV}.build.yml"
echo $compose_file
并且它输出:
.build.ymlpose.development
据我了解,该输出对我来说没有任何意义,我尝试重新安装 bash,但仍然遇到同样的问题。
答案1
变量内容末尾有回车符PROJECT_ENV
。这可能是因为您的脚本使用了CR+LF
行尾(适用于 DOS/Windows)而不是 sole LF
(Unix/Linux)。
在 Linux 中,dos2unix
有正确的工具可以修复它。
详细解释如下:
最终
echo
印刷品docker-compose.development
CR
使终端回到行首。连续的字符会覆盖先前的文本:
.build.yml
因此结果是:
.build.ymlpose.development