linux - Bash "source"命令返回错误的连接字符串

标签 linux bash shell centos redhat

我有一个这样的配置文件:

//filename : stat.conf
LAS_SERVER="127.0.0.1"
LAS_PORT=3306
LAS_USER=root
LAS_PWD=root
LAS_DB=test
CONN_STR_LAS_DB="-h$LAS_SERVER -P$LAS_PORT -u$LAS_USER -p$LAS_PWD $LAS_DB"

现在我像这样运行 source 命令:

$ source ./stat.conf

$ echo $CONN_STR_LAS_DB
testot.0.1

可以看到结果是错误的。出乎我们的意料。

相比之下,如果我像这样在 shell 中运行命令,我可以获得正确的结果:

$ LAS_SERVER="127.0.0.1"
$ LAS_PORT=3306
$ LAS_USER=root
$ LAS_PWD=root
$ LAS_DB=test
$ CONN_STR_LAS_DB="-h$LAS_SERVER -P$LAS_PORT -u$LAS_USER -p$LAS_PWD $LAS_DB"
$ echo $CONN_STR_LAS_DB
-h127.0.0.1 -P3306 -uroot -proot test

这是正确的结果。

所以,我的问题是:为什么我在使用“source ./stat.conf”时得到了错误的结果?

我在另一台电脑上测试了同样的操作,可以得到正确的结果。我在计算机上配置时是否遗漏了什么?

我的操作系统是 CentOS 5。

最佳答案

您的配置文件具有 Windows 样式的行结尾 (\r\n),而不是 Unix 样式(只是\n)。你可以使用 dos2unix 命令来转换它。然后,切换到不会创建具有奇怪行尾的文件的文本编辑器。

关于linux - Bash "source"命令返回错误的连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12851470/

相关文章:

php - Shell 命令适用于命令行,但不适用于 PHP exec

linux - 以顺序方式处理并发作业

macos - 在 OS X 上设置环境变量

linux - 一次获取多个文件的大小

linux - 基于 ARM 的处理器上的编译器标志

python - 运行 python3 manage.py migrate 时 Virtualenv(Pyt​​hon3.5/pip3/Django2.0/psycopg2) 出错

linux - Bash - 查找带空格的文件并使用 sed 重命名

linux - Bash 语句在此处 doc 中时挂起

regex - 使用grep从shell脚本中的正则表达式中提取组

django - 无法在 Django 中执行 runserver : "TypeError: putenv() argument 2 must be string, not None"