Linux 使用bash/shell在echo中显示2个变量的疯狂问题
我对shell/bash脚本有一个非常愚蠢的问题。 我有一个定义了两个变量的配置文件…请参见下面我的名为test.conf的文件: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 如您所见,这非常简单,因为此类脚本应返回以下内容:
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样式的回车符