如何在 Bash 脚本中连接字符串变量

How to concatenate string variables in a Bash script

以下脚本产生意外输出

#!/bin/bash
#
MY_DIRECTORY=.
OUTPUT_DIR="$MY_DIRECTORY""/build_test"
echo "MY_DIRECTORY is $MY_DIRECTORY"
echo "OUTPUT_DIR is $OUTPUT_DIR"

我期望如下:

MY_DIRECTORY is .
OUTPUT_DIR is ./build_test

但它实际产生:

MY_DIRECTORY is .
/build_testis .

谁能告诉我我做错了什么? 注意我是 运行 GNU bash 版本 4.4.12(3)-在 Windows 10.

下的 Cygwin 命令 shell 中发布

剧本不错。我试图 运行 在我的系统上,并给出了预期的输出。我在 Arch 上 运行ning Bash 版本 4.38.48。

如果您在 Windows,您也可以在 Windows 上尝试 bash,但我认为它不会影响输出。

这是混合 Unix 和 Windows 行结尾的问题。 MY_DIRECTORY= 行末尾有一个回车 return。回车 return 导致第二个输出行的一部分被覆盖。我可以在我的 Cygwin 安装上复制你的输出。

如果您 运行 通过 dos2unix 脚本,它将按预期工作。

为防止此类事情再次发生,请将您的文本编辑器配置为使用 Unix 行结尾保存文件。