【问题标题】:String concatenation in bash 3.2.57 (macOS)bash 3.2.57 (macOS) 中的字符串连接
【发布时间】:2018-01-09 18:39:38
【问题描述】:

我的目标是连接两个字符串。

这是我的 bash 脚本的复制粘贴:

str1="Hello"
str2="World"
str3=$str1$str2
echo $str3

预期的输出是HelloWorld,但我得到的是World

当我在终端中运行它时它工作正常。

这是我在脚本上运行 cat -v 时的输出:

str1="Hello"^M
str2="World"^M
str3=$str1$str2^M
echo $str3^M

我错过了什么吗?

【问题讨论】:

  • str1的定义不是以windows line-end结尾吗?

标签: string bash macos concatenation


【解决方案1】:

这可能是因为您在 $str1 的末尾有一个回车符 (\r)。我得到以下相同的输出:

#!/bin/bash
str1="Hello"$'\r'
str2="World"
str3=$str1$str2
echo $str3

当您在 MSWin 机器上创建脚本时,经常会发生这种情况。

它打印 Hello,但随后 \r 将光标移回行首,并用 World 覆盖 Hello。

您可以通过十六进制转储或cat -v 运行它来验证它。

【讨论】:

  • 谢谢,查看更新后的问题,输出为cat -v
  • @EtienneMartin:是的,就是这样。删除回车。
  • 你是 @choroba,在我的编辑器中将行尾更改为 unix 解决了这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 2022-01-07
  • 2018-05-08
  • 2012-12-19
  • 2016-07-30
  • 1970-01-01
相关资源
最近更新 更多