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

时间:2019-01-26 23:58:34

标签: linux bash shell

我有一个愚蠢的问题,完全用shell / bash脚本发疯了。 我有一个定义了2个变量的配置文件...请参阅下面的文件 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_DIR 丢失了,我不知道为什么,因为已经定义了它。

您知道为什么吗?

谢谢

1 个答案:

答案 0 :(得分:3)

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

$ WEB_DIR=$'www\r'
$ TPL_DIR=$'tpl\r'
$ echo -e "$WEB_DIR - $TPL_DIR"
 - tpl

通过将光标移至行的开头来“显示” WEB_DIR末尾的回车,以便- tpl覆盖www

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