zoukankan      html  css  js  c++  java
  • shell文件报错syntax error near unexpected token '$' ''

    本来跑的好好得一个文件,在windows下修改了,然后移植到linux就报错了。
    找了一圈以下是解决方案:

    这种情况发生的原因是因为你所处理的文件换行符是dos格式的" "
    可以使用cat -v 文件名 来查看换行符是否是,如果是上述的,则行结尾会是^m
    需要转换成linux/unix格式的" "
    具体转换办法就是转换换行符
    可以用sed命令处理一下文件,命令如下:
    sed 's/ //' 原文件 >转换后文件


     
    1.png

     
    2.png

    检查shell语法

    [root@iZm5ed2begvgw01qrymv8yZ Data]# bash -n task_start.sh 
    task_start.sh: line 4: syntax error near unexpected token `$'do
    ''
    'ask_start.sh: line 4: `do
    [root@iZm5ed2begvgw01qrymv8yZ Data]# 
    
    

    在我执行发现代码没有了

    [root@iZm5ed2begvgw01qrymv8yZ Data]# sed 's/
    //g' task_start.sh > task_start.sh 
    [root@iZm5ed2begvgw01qrymv8yZ Data]# 
    [root@iZm5ed2begvgw01qrymv8yZ Data]# 
    [root@iZm5ed2begvgw01qrymv8yZ Data]# 
    [root@iZm5ed2begvgw01qrymv8yZ Data]# 
    [root@iZm5ed2begvgw01qrymv8yZ Data]# cat task_start.sh -v
    [root@iZm5ed2begvgw01qrymv8yZ Data]# cat task_start.sh
    

    原因
    ···

    解决

    [root@iZm5ed2begvgw01qrymv8yZ Data]# sed 's/
    //g' task_start.sh > task_start2.sh 
    [root@iZm5ed2begvgw01qrymv8yZ Data]# 
    [root@iZm5ed2begvgw01qrymv8yZ Data]# 
    [root@iZm5ed2begvgw01qrymv8yZ Data]# cat task_start2.sh 
    #!/usr/bin/env bash
    task_url=("http://hs.oeynet.com/task.php" "http://hs.oeynet.com/task.php")
    for n in `seq 10`
    do
        for task in ${task_url[*]}
        do
            curl $task  >> /www/server/logs/task.log
        done
        sleep 6
    done
    [root@iZm5ed2begvgw01qrymv8yZ Data]# cat task_start2.sh -v
    

     
  • 相关阅读:
    修复 Visual Studio Error “No exports were found that match the constraint”
    RabbitMQ Config
    Entity Framework Extended Library
    Navisworks API 简单二次开发 (自定义工具条)
    NavisWorks Api 简单使用与Gantt
    SQL SERVER 竖表变成横表
    SQL SERVER 多数据导入
    Devexpress GridControl.Export
    mongo DB for C#
    Devexress XPO xpPageSelector 使用
  • 原文地址:https://www.cnblogs.com/gongxianjin/p/11266038.html
Copyright © 2011-2022 走看看