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

本文详细介绍了在Linux和Windows环境下,由于回车换行符的不同导致Shell脚本运行错误的问题。提供了两种解决方案:一是通过Notepad++转换文件格式,二是直接在Linux下使用vim修改文件格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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.展示信息:

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

#!/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下的格式图片:

    

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

    

 

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

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

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

    (04)运行成功:

      

 

(第二种)解决方案:

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

    (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)

 

转载于:https://www.cnblogs.com/xinliang1788/p/10053178.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值