我的目标是连接两个字符串。
这是我的 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
运行它来验证它。
关于bash 3.2.57 (macOS) 中的字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45462504/