我有一个愚蠢的问题,完全用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 丢失了,我不知道为什么,因为已经定义了它。
您知道为什么吗?
谢谢
答案 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行尾保存文件。