Bash 将字符串追加到变量
我通过查找特定字符串来读取一些文件行。当我找到时,我将其分配给var。 但当我试图附加到那个字符串时,我遇到了问题。我得到的var不是添加到var的末尾,而是用新字符替换开头的字符 例如:Bash 将字符串追加到变量,bash,Bash,我通过查找特定字符串来读取一些文件行。当我找到时,我将其分配给var。 但当我试图附加到那个字符串时,我遇到了问题。我得到的var不是添加到var的末尾,而是用新字符替换开头的字符 例如: echo $fileToGet newVar=$fileToGet".xml" echo $newVar 输出: c024z160205 .xmlz160205 我想要的是:c024z160205.xml 我想我尝试了堆栈上的所有内容,有几种附加方式,但都不起作用。问题是\r在var的末尾。在将行分配给v
echo $fileToGet
newVar=$fileToGet".xml"
echo $newVar
输出:
c024z160205
.xmlz160205
我想要的是:c024z160205.xml
我想我尝试了堆栈上的所有内容,有几种附加方式,但都不起作用。问题是\r在var的末尾。在将行分配给var fileToGet之前,我会执行以下操作:
newVar=$echo$fileToGet | tr-d'\r'
在连接之后,我得到了我想要的
我编辑这个答案是因为它包含错误的信息。@chepner在评论中描述的真正问题是什么:“终端只是在行首显示回车后的任何字符,覆盖了前面的字符。”
谢谢 您的代码对我有效,请尝试使用:
newVar="${fileToGet}.xml"
而不是newVar=$fileToGet.xml;你必须把变量也放在引号里
告诉我现在是否有效。我以前也尝试过,但没有成功,不管怎样,我找到了解决方案-看看我的答案。是的,我看到了,但很奇怪。。除非fileToGet中有一些“特殊”字符,否则应该在开头追加它,fileToGet的值是多少?它是c024z160205。好吧,如果它能修剪\r,我想它足够了:这里不需要引号;赋值语句中的参数扩展不受分词或路径名扩展的影响,这可能是引用它的两个原因;终端仅在行首显示回车后的任何字符,覆盖前面的字符。您可以看到,newVar包含所有预期的数据,带有类似echo$newVar | hextump的内容。