Linux 使用bash/shell在echo中显示2个变量的疯狂问题

Linux 使用bash/shell在echo中显示2个变量的疯狂问题,linux,bash,shell,Linux,Bash,Shell,我对shell/bash脚本有一个非常愚蠢的问题。 我有一个定义了两个变量的配置文件…请参见下面我的名为test.conf的文件: WEB_DIR="www" TPL_DIR="tpl" 现在我有了名为test.sh的shell/bash脚本,内容如下: #!/bin/bash source test.conf echo $WEB_DIR echo $TPL_DIR echo -e "$WEB_DIR - $TPL_DIR" exit 0 如您所见,这非常简单,因为此类脚本应返回以下内容:

我对shell/bash脚本有一个非常愚蠢的问题。 我有一个定义了两个变量的配置文件…请参见下面我的名为test.conf的文件:

WEB_DIR="www"
TPL_DIR="tpl"
现在我有了名为test.sh的shell/bash脚本,内容如下:

#!/bin/bash
source test.conf
echo $WEB_DIR
echo $TPL_DIR
echo -e "$WEB_DIR - $TPL_DIR"
exit 0
如您所见,这非常简单,因为此类脚本应返回以下内容:

www
tpl
www - tpl
但是,我不知道为什么,当我启动这个脚本时,他返回了这个:

www
tpl
- tpl
我们可以看到第一个变量$WEB\u DIR丢失了,我不知道为什么,因为她已经定义好了

你知道为什么吗

谢谢
L.

test.conf有DOS行结尾,因此每个变量的值以回车结束。比较:

$ WEB_DIR=$'www\r'
$ TPL_DIR=$'tpl\r'
$ echo -e "$WEB_DIR - $TPL_DIR"
 - tpl
通过将光标移动到行的开头,“显示”了
WEB\U DIR
末尾的回车符,以便
-tpl
覆盖
www


使用
dos2unix
删除DOS行尾,或使用文本编辑器使用Unix行尾保存文件。

检查文件是否有DOS样式的回车符