【问题标题】:Bash - disappearing values while concatenating stringsBash - 连接字符串时消失的值
【发布时间】:2016-07-30 21:32:12
【问题描述】:

我正在尝试将我从另一个文件 (xml) 获得的文件值插入到文件中,并且我希望它们位于一行中。我检查了变量 - 它们是分开的,但是一旦我尝试以某种方式将它们连接起来,就会出现问题,我只能得到先前字符串的一部分。

我的代码如下所示:

echo $usd
echo $gbp
all=$usd$space$gbp
echo $all

输出如下:

3,6525
5,5407
 5,5407

有人知道我做错了什么吗?或者我可以做些什么来恢复我的数据?

【问题讨论】:

  • 串联看起来没问题。一定是你的数据有问题。您应该显示更多代码。
  • 您的数据包含回车符\r -- 使用echo "$usd" | od -c 验证 -- 在您的输入文件上运行dos2unix

标签: string bash concatenation string-concatenation


【解决方案1】:

您的变量中有一个 CR。我可以用 vars 重现你的情况

usd="3,6525^M"
gbp="5,5407^M"
space=" "

(我在vi中用CTRL-V CTRL-M输入了^M,是\r字符) 当你不想清理 xml、usd 和 gbp 时,可以使用

all=${usd%$'\r'}${space}${gbp%$'\r'}

【讨论】:

  • 或者在源文件上运行dos2unix来删除坏字符。这解决了我的情况。
猜你喜欢
  • 2012-10-17
  • 2016-11-07
  • 2019-07-22
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 2018-01-09
  • 1970-01-01
  • 2017-11-24
相关资源
最近更新 更多