2016-02-07 113 views
0

我通过查找某个特定的字符串来读取某个文件行。当我发现我将它分配给var。 但是,当我尝试追加到该字符串我有问题。而不是添加到var的结尾我得到var在开始处的字符被新字符替换。将字符串附加到变量

例子:

echo $fileToGet 
newVar=$fileToGet".xml" 
echo $newVar 

输出:

c024z160205 
.xmlz160205 

而我想要的是:c024z160205.xml 我觉得我什么都试过什么是堆栈,附加但没有任何工程的几种方法。

回答

0

问题是在var结束时\r。分配线路无功fileToGet之前,我做这样的事情:

newVar=$(echo "$fileToGet" | tr -d '\r')

和连接后,我有我想要的。

我编辑此答案,因为它包含虚假信息。 @chepner在评论中描述了什么问题:'The terminal simply displays any characters following the carriage return at the beginning of the line, overwriting the earlier characters.' 谢谢!

+3

作业并未取代任何字符;终端只显示在行首的回车符之后的任何字符,覆盖前面的字符。你可以看到'newVar'包含了所有预期的数据,比如'echo“$ newvar”| hexdump'。 – chepner

-1

您的代码为我工作,请尝试使用:

newVar="${fileToGet}.xml" 

而不是newVar=$fileToGet".xml";你必须把变量放在引号内。

告诉我,如果它现在有效。

+0

我也尝试过,但我没有工作,无论如何,我找到了解决方案 - 看看我的答案。 –

+0

是的,我看到了,但它很奇怪..除非fileToGet中有一些'特殊'字符,它应该在开始处附加,fileToGet的值是什么? – Ghost

+0

它是'c024z160205'。 –