0

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

//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。

4

2 回答 2

6

您的配置文件具有 windows 样式的行尾 (\r\n),而不是 unix 样式的 (只是 \n)。您可以使用 dos2unix 命令对其进行转换。然后,切换到不会创建带有奇怪行尾的文件的文本编辑器。

于 2012-10-12T02:46:41.857 回答
-2

我知道你的 shell 代码有什么问题。

那是环境变量的结果,你在shell脚本中声明的$CONN_STR_LAS_DB可以只存在于这个脚本的运行时间内,当然你不能在这个脚本之外回显$CONN_STR_LAS_DB。

解决这个问题的方法是“导出”你的变量,即

export $CONN_STR_LAS_DB                

在你的 shell 脚本中,这肯定是可以做到的!祝你好运!

于 2012-10-12T02:54:05.327 回答