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

标签 linux bash shell

我有一个与 shell/bash 脚本完全疯狂的愚蠢问题。 我有一个定义了 2 个变量的配置文件...请参阅下面我的名为 test.conf 的文件:

WEB_DIR="www"
TPL_DIR="tpl"

现在我的 shell/bash 脚本名为 test.sh ,内容如下:

#!/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丢失了,我不知道为什么,因为她已经被定义了。

你知道为什么吗?

谢谢 L.

最佳答案

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 行结尾保存文件。

关于linux - 使用 bash/shell 在 echo 中显示 2 个变量的疯狂问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54383941/

相关文章:

php - Codeigniter、GroceryCRUD、GoDaddy - 文件上传错误

linux - Bash脚本,如果语句

bash - UNIX - 计算两个字段之间每行字符的出现次数并添加包含结果的新列

regex - 如何获取括号中指定的内容?

linux - 递归复制和重命名

linux - 只允许来自标准输入的数字(读取命令)

linux - 仅在不破坏任何内容的情况下应用补丁

用于 ffmpeg 转换的 bash 脚本不循环

linux - 用于访问 linux 终端的 NPM.JS 插件

python - 从 python 在 shell 中启动外部 shell python 实例