wak*_*n22 2 linux bash string concatenation windows-subsystem-for-linux
我很想知道为什么我的脚本在 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
Run Code Online (Sandbox Code Playgroud)
它输出:
.build.ymlpose.development
Run Code Online (Sandbox Code Playgroud)
据我了解,该输出对我来说没有任何意义,我尝试重新安装 bash 但我仍然遇到同样的问题。
PROJECT_ENV变量内容末尾有一个回车符。这可能是因为您的脚本使用CR+LF 行结尾(在 DOS/Windows 中是正确的)而不是唯一的LF(Unix/Linux)。
在 Linux 中dos2unix是修复它的正确工具。
详细解释如下:
最后的echo印刷品
docker-compose.development
Run Code Online (Sandbox Code Playgroud)CR 使终端回到行首。
连续字符覆盖之前的文本:
.build.yml
Run Code Online (Sandbox Code Playgroud)因此结果是:
.build.ymlpose.development
Run Code Online (Sandbox Code Playgroud)