syntax error near unexpected token `do(写的shell脚本出现格式问题)--->1.问题2.展示信息3.解决方案

1问题:Linux和windows下的回车换行符不兼容的问题

[root@node-01 script]# sh start_zk.sh
art_zk.sh: line 3: syntax error near unexpected token `do
'tart_zk.sh: line 3: `do

2.展示信息:

syntax error near unexpected token `do(写的shell脚本出现格式问题)--->1.问题2.展示信息3.解决方案

此处我贴出了源码;大家可以试一试:

#!/bin/sh
for host in node-01 node-02 node-03
do
ssh $host "source /etc/profile;nohup zkServer.sh > /dev/null 2>&1 &"
echo "$host zk is running"
done

3.解决方案(有两种):

  看似写的完全没有问题的逻辑代码.但是只要运行就会出错.

  本人是在wind本地写的shell命令,问题主要出在自己在wind上写的内容,而需要上传到linux系统上运行就会出现格式问题.

  (第一种)(01).是win下的格式图片:

    syntax error near unexpected token `do(写的shell脚本出现格式问题)--->1.问题2.展示信息3.解决方案

  (02).是linux下的格式图片:

    syntax error near unexpected token `do(写的shell脚本出现格式问题)--->1.问题2.展示信息3.解决方案

    (03)设置显示上面那些黑色块:CRLF和LF

      notepad++中首先设置视图->显示符号->显示所有符号,然后就看到了预料到的,所有的回车换行都是windows的CRLF

      其次设置:编辑->文档格式转换->转换为UNIX格式

    (04)运行成功:

      syntax error near unexpected token `do(写的shell脚本出现格式问题)--->1.问题2.展示信息3.解决方案

(第二种)解决方案:

  这里就不用上面的案例举例.这是补充方式:

    (1)如果在wind上写好的没有更改格式,也可以在linux上进行查询和更改

    (2)例如root目录下有一个 itcast_gdm_user_basic.sh文件

    (3)vim  itcast_gdm_user_basic.sh

    (4)进去以后直接输入  :set fileformat    回车    

      如果显示是fileformat=dos   就说明是wind格式

      如果显示是fileformat=unix 就说明是linux格式

    (5)更改格式:  直接输入  :set fileformat=unix  回车就更该完成

     (6)再次确认是否成功,重新执行(4)

上一篇:使用submit异步提交,阻止表单默认提交


下一篇:通过修改注册表建立Windows自定义协议