原因

如果是Windows将字符串复制到Linux执行

大概率是换行符问题。

换行符

windows

换行用的两个符号,回车“\r”+换行“\n”

linux

只有换行“\n”

显示

以Notepad++为例,行尾的符号在左侧为仅有“\n”,右侧为“\r\n”:
image.png

解决方式

文本编辑器(NotePad++)

我之前也遇到这个问题,采用的方式是替换:
image.png
删除也行:
image.png

Linux命令行

删除“\r”:sed -i ‘s/\r$//‘ [文件]

sed -i 命令详解

  1. # 对每行匹配到的第一个字符串进行替换
  2. sed -i 's/原字符串/新字符串/' ab.txt
  3. # 对全局匹配上的所有字符串进行替换
  4. sed -i 's/原字符串/新字符串/g' ab.txt
  5. # 删除所有匹配到字符串的行
  6. sed -i '/匹配字符串/d' ab.txt
  7. # 特定字符串的行后插入新行
  8. sed -i '/特定字符串/a 新行字符串' ab.txt
  9. # 特定字符串的行前插入新行
  10. sed -i '/特定字符串/i 新行字符串' ab.txt
  11. # 把匹配行中的某个字符串替换为目标字符串
  12. sed -i '/匹配字符串/s/源字符串/目标字符串/g' ab.txt
  13. # 在文件ab.txt中的末行之后,添加bye
  14. sed -i '$a bye' ab.txt
  15. # 对于文件第3行,把匹配上的所有字符串进行替换
  16. sed -i '3s/原字符串/新字符串/g' ab.txt