写shell,运行出错:syntax error near unexpected token `do

cygwin下面写shell,运行出错:syntax error near unexpected token `$’do\r”

写shell,运行出错:syntax error near unexpected token `$’do\r”

 

【问题】

在cygwin下,用notepad++写了个简单的shell脚本,内容如下:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

#!/bin/bash

#remove *.bak in subfolder files

echo 'remove *.bak'

sub_folders=`ls`

echo 'sub_folders='$sub_folders

for each_item in $sub_folders; do

    if [ -d $each_item ]; then

        echo $each_item

    else

        echo $each_item "is file ------"

    fi

done

exit 0

 

但是运行出错:

 

1

line 6: syntax error near unexpected token `$'do\r''

 

【解决过程】

1.网上搜了下,参考:linux shell脚本报错:syntax error near unexpected token `

然后去notepad++中,视图->显示符号->显示所有符号,然后就看到了预料到的,所有的回车换行都是windows的CR LF:

得知是Linux和windows下的回车换行符不兼容的问题。

所以,剩下的就是去将windows下面的CR LF,转换为Linux下面的LF,即可。

此处,不需要再麻烦地去用其他dos2unix等工具了,notepad++就可以帮忙搞定:

编辑->档案格式转换->转换为UNIX格式:

即可将所有的 CR LF,转换为LF:

所以,越加发现notepad++的强大之处了。

然后再运行此shell脚本,即可正常运行了。

【总结】

linux/cygwin下面的shell脚本出现错误:

syntax error near unexpected token `$’do\r”

是由于该脚本文件是在windows环境下创建编辑的,其默认是将所有的回车变成:

CR加上 LF,而Linux/Unix中的回车只是LF,所以导致解释器不认,出现此错误。

解决办法就是,将所有的CRLF转换为LF即可。

转换的方法有多种,比如用dos2unix,或用此处的notepad++帮我们转换,都可以。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用和都是关于shell脚本语法错误的提示信息。在引用中,提示出现了"Permission denied"这个错误,意味着你没有执行该脚本的权限。而在引用中,提示出现了"syntax error near unexpected token `then'",意味着在该脚本的第四行附近出现了一个意外的标记。这可能是由于缺少了某个关键字或者符号导致的语法错误。此外,在引用中,出现了一个关于Python脚本的语法错误的提示信息。在第一行附近出现了"syntax error near unexpected token `('"的错误,这可能是由于缺少了某个标记或者括号导致的。最后,在你的问题中引用中出现了一个语法错误的提示,即"c: line 1: syntax error near unexpected token `|'"。这个错误提示表明在第一行附近出现了一个意外的标记,可能是由于缺少了某个符号或者语法错误导致的。综上所述,以上引用中的错误信息都与脚本语法有关,可能是由于缺少关键字、符号或者括号等导致的。需要仔细检查和修正相应的语法错误。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vimpython时:line 1: syntax error near unexpected token](https://blog.csdn.net/weixin_43803904/article/details/102654135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [test.sh: line 4: syntax error near unexpected token `then](https://blog.csdn.net/ameryzhu/article/details/117476206)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值