原因

执行 shell脚本报错:

行4: 未预期的符号 `$’\r’’ 附近有语法错误

是从window复制文件到linux出现格式问题无法解析的

解决办法

安装 yum install -y dos2unix

  1. [root@zjj101 soft]# yum install -y dos2unix
  2. 已加载插件:fastestmirror
  3. Loading mirror speeds from cached hostfile
  4. * base: mirrors.aliyun.com
  5. * epel: mirrors.tuna.tsinghua.edu.cn
  6. * extras: mirrors.aliyun.com
  7. * updates: mirrors.bfsu.edu.cn
  8. 正在解决依赖关系
  9. --> 正在检查事务
  10. ---> 软件包 dos2unix.x86_64.0.6.0.3-7.el7 将被 安装
  11. --> 解决依赖关系完成
  12. 依赖关系解决
  13. ======================================================================================================================
  14. Package 架构 版本 大小
  15. ======================================================================================================================
  16. 正在安装:
  17. dos2unix x86_64 6.0.3-7.el7 base 74 k
  18. 事务概要
  19. ======================================================================================================================
  20. 安装 1 软件包
  21. 总下载量:74 k
  22. 安装大小:190 k
  23. Downloading packages:
  24. dos2unix-6.0.3-7.el7.x86_64.rpm | 74 kB 00:00:00
  25. Running transaction check
  26. Running transaction test
  27. Transaction test succeeded
  28. Running transaction
  29. 正在安装 : dos2unix-6.0.3-7.el7.x86_64 1/1
  30. 验证中 : dos2unix-6.0.3-7.el7.x86_64 1/1
  31. 已安装:
  32. dos2unix.x86_64 0:6.0.3-7.el7
  33. 完毕!

对文件进行转码
我对什么文件转码,就 dos2unix 文件名,比如说 我对xcall转码,就dos2unix xcall 就可以了

[root@zjj101 soft]# ls
data  demo  docker  hadoop-2.7.2  hive-1.2.1  movie_info.txt  myconf  sortby-result  tmp  xcall  xsync
[root@zjj101 soft]# dos2unix xcall 
dos2unix: converting file xcall to Unix format ...

注意

如果这个文件你又从windows复制了新的东西进来,如果运行 shell脚本又提示未预期的符号 `$’\r’’ 附近有语法错误这个东西,那么再执行一次 上面的命令, 也就是 dos2unix xxxxxx命令 再次对xxxxxx文件进行转码