以下脚本会产生意外的输出
#!/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)-发行版。
答案 0 :(得分:2)
脚本很好。我尝试在系统上运行,并提供了预期的输出。我正在Arch上运行Bash版本4.38.48。
如果您在Windows上,也可以在Windows上尝试bash,但我认为它不会影响输出。
答案 1 :(得分:2)
这是Unix和Windows混合行尾的问题。 MY_DIRECTORY=
行的末尾有回车符。回车导致第二条输出线的一部分被覆盖。我可以在Cygwin安装中复制您的输出。
如果通过dos2unix
运行脚本,它将按预期运行。
为防止这种情况再次发生,请配置文本编辑器以使用Unix行尾保存文件。