我无法理解这一点...... 我有带变量的.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
有人可以帮我理解这种行为吗?在源变量的情况下,我该怎么做才能执行追加?
答案 0 :(得分:2)
您在Windows计算机上,或源文件是在Windows计算机上创建的。
您的行结尾是CRLF,回车和换行,DOS / Windows样式。 shell将回车视为常规字符,而不是“行尾”的一部分。
删除回车,一切都将恢复正常。