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

时间:2018-06-28 09:43:50

标签: string bash variables cygwin

以下脚本会产生意外的输出

#!/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 .

谁能告诉我我在做什么错? 请注意,我正在Windows 10下的Cygwin命令外壳中运行GNU bash版本4.4.12(3)-发行版。

2 个答案:

答案 0 :(得分:2)

脚本很好。我尝试在系统上运行,并提供了预期的输出。我正在Arch上运行Bash版本4.38.48。

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

答案 1 :(得分:2)

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

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

为防止这种情况再次发生,请配置文本编辑器以使用Unix行尾保存文件。