代码之家  ›  专栏  ›  技术社区  ›  foobar

我的shell脚本有什么问题

  •  1
  • foobar  · 技术社区  · 11 年前

    我想把一个本地文件压缩到其他临时位置。 以下是给出错误的代码

    path="/home/tft/Downloads/ie.js"
    temp="/home/tft/Downloads/Temp"
    name=$(basename "$path")
    echo "$path"
    echo "$name"
    echo "$temp"
    echo "$temp/$name.zip" #Its output is also weird!
    zip -r -j "$temp/$name.zip" $path 
    

    低于输出:

     /bin/bash test.sh
    
    /home/tft/Downloads/ie.js
    ie.js
    /home/tft/Downloads/Temp
    .zipjstft/Downloads/Temp 
            zip warning: name not matched: /home/tft/Downloads/ie.js
    
    )zip . -i /home/tft/Downloads/ie.js -r -j /home/tft/Downloads/Temp
    
    1 回复  |  直到 11 年前
        1
  •  2
  •   konsolebox    11 年前

    您的脚本是DOS格式的。首先将其转换为UNIX格式:

    sed -i 's|\r||' yourscript.sh
    

    或使用 dos2unix :

    dos2unix yourscript.sh
    

    您看到的错误消息是由一个额外的字符(回车 \r )在你的价值观结束时。当文件的格式不是UNIX而是DOS时会发生这种情况,因为DOS的行尾是 \r\n 其中UNIX只有 \n .