【问题标题】:Unix Script: Appending two variables from a sourced file not workingUnix脚本:从源文件中附加两个变量不起作用
【发布时间】:2014-01-05 16:55:34
【问题描述】:

这个我看不懂…… 我有带有变量的 .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

有人可以帮我理解这种行为吗?如果是源变量,我应该怎么做才能执行附加?

【问题讨论】:

标签: shell unix ksh


【解决方案1】:

您在 Windows 机器上,或者源文件是在 Windows 机器上创建的。

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

去掉回车,一切都会恢复正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多