Unix脚本:从源文件中添加两个变量不起作用

时间:2014-01-04 05:56:57

标签: shell unix ksh

我无法理解这一点...... 我有带变量的.sh文件(varsource.sh)

var1=AppleOrange
var2=Mango

现在我正在我的test.sh脚本中找到我的varsource.sh

#!/bin/ksh
. ./varsource.sh
appended=$var1$var2
echo $appended
varloc1=aPPLEoRANGE
varloc2=mANGO
locappended=$varloc1$varloc2
echo $locappended

上述脚本的输出是

MangoOrange
aPPLEoRANGEmANGO

当我使用源文件中的变量和我的脚本本地变量时,我期望类似的行为。 对于源文件中的变量,第二个变量替换第一个变量的字符而不是附加。

更多观察:

  . ./varsource.sh
    appended=${var1}xx
    echo $appended

输出:xxpleOrange

但是附加到变量的左端是正常的

. ./varsource.sh
appended=xx$var1
echo $appended

输出:xxAppleOrange

有人可以帮我理解这种行为吗?在源变量的情况下,我该怎么做才能执行追加?

1 个答案:

答案 0 :(得分:2)

您在Windows计算机上,或源文件是在Windows计算机上创建的。

您的行结尾是CRLF,回车和换行,DOS / Windows样式。 shell将回车视为常规字符,而不是“行尾”的一部分。

删除回车,一切都将恢复正常。