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

标签 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)。我得到与以下相同的输出:

#!/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/

相关文章:

java - 修剪 Struts2 文本字段字符串输入

java - Java中如何比较两个以上的字符串?

mysql - 为什么Mysql中的两个字符串相同?

linux - 不能在 awk 命令中使用 unix $variable

git - 如何在 git 配置别名内的 bash 片段内的命令替换内使用括号字符?

macos - 在 Mac OS Yosemite 中尝试 "pip install psycopg2"时出现错误代码 1

c - 如何在 C 中从字符串中获取特定单词并消除其他单词

bash - Bash shell 中的正则表达式密码验证

python - 'DisabledBackend' 对象没有属性 '_get_task_meta_for'

c - 将证书插入钥匙串(keychain)