String bash 3.2.57(macOS)中的字符串连接

String bash 3.2.57(macOS)中的字符串连接,string,bash,macos,concatenation,String,Bash,Macos,Concatenation,我的目标是连接两个字符串 下面是我的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末尾有一个回车(\r)。我得到了

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

下面是我的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
末尾有一个回车(
\r
)。我得到了与以下相同的输出:

#!/bin/bash
str1="Hello"$'\r'
str2="World"
str3=$str1$str2
echo $str3
在MSWin计算机上创建脚本时经常会发生这种情况

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


您可以通过运行十六进制转储或
cat-v

来验证它,这可能是因为在
$str1
末尾有回车符(
\r
)。我得到了与以下相同的输出:

#!/bin/bash
str1="Hello"$'\r'
str2="World"
str3=$str1$str2
echo $str3
在MSWin计算机上创建脚本时经常会发生这种情况

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


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

str1
的定义是否以windows行结尾?str1的定义是否以windows行结尾?谢谢,请参阅更新后的问题以及
cat-v
的输出@EtienneMartin:是的,就是这样。删除回车符。你就是@choroba,在我的编辑器中将行尾更改为unix解决了这个问题。谢谢,请参阅更新的问题,输出为
cat-v
@EtienneMartin:是的,就是这样。移除回车符。你是@choroba的人,在我的编辑器中将行尾更改为unix解决了这个问题。