Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将字符串追加到变量_Bash - Fatal编程技术网

Bash 将字符串追加到变量

Bash 将字符串追加到变量,bash,Bash,我通过查找特定字符串来读取一些文件行。当我找到时,我将其分配给var。 但当我试图附加到那个字符串时,我遇到了问题。我得到的var不是添加到var的末尾,而是用新字符替换开头的字符 例如: echo $fileToGet newVar=$fileToGet".xml" echo $newVar 输出: c024z160205 .xmlz160205 我想要的是:c024z160205.xml 我想我尝试了堆栈上的所有内容,有几种附加方式,但都不起作用。问题是\r在var的末尾。在将行分配给v

我通过查找特定字符串来读取一些文件行。当我找到时,我将其分配给var。 但当我试图附加到那个字符串时,我遇到了问题。我得到的var不是添加到var的末尾,而是用新字符替换开头的字符

例如:

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的内容。