V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
orbwalker
V2EX  ›  程序员

-- 关于 shell 脚本在 windows 上开发问题

  •  
  •   orbwalker · 2019-10-29 14:19:25 +08:00 · 2204 次点击
    这是一个创建于 975 天前的主题,其中的信息可能已经有所发展或是发生改变。
    vim demo.sh

    vim 创建出来的,改变权限就能使用

    windows 上,sublime 创建的 sh 脚本,utf-8 无 bom 格式。

    结果同样的代码,硬是显示 No such file or directory

    18 条回复    2019-10-30 19:18:53 +08:00
    ysc3839
        1
    ysc3839  
       2019-10-29 14:24:28 +08:00   ❤️ 1
    代码是什么?运行环境是什么?什么情况下出现的 No such file or directory ?
    hasdream
        2
    hasdream  
       2019-10-29 14:33:17 +08:00   ❤️ 1
    dos2unix 转换下脚本
    airfling
        3
    airfling  
       2019-10-29 14:36:22 +08:00   ❤️ 1
    windows 下的是 dos 格式,需要转成 unix 格式,具体操作就是把换行符由\r\n 换成\r
    chengyiqun
        4
    chengyiqun  
       2019-10-29 14:58:17 +08:00   ❤️ 1
    @airfling linux 上是\n 吧, 楼主是 unix 还是 linux?
    wangyzj
        5
    wangyzj  
       2019-10-29 15:18:56 +08:00   ❤️ 1
    @hasdream +1
    同时二进制传输 ftp
    CallMeReznov
        6
    CallMeReznov  
       2019-10-29 15:20:21 +08:00   ❤️ 1
    notepad++ editplus
    funky
        7
    funky  
       2019-10-29 15:38:43 +08:00   ❤️ 1
    set ff=unix
    ipwx
        8
    ipwx  
       2019-10-29 15:51:31 +08:00   ❤️ 1
    .sh 执行要看第一行决定解释器,比如 #!/bin/bash

    然而,如果行尾有 \r,那么它也会被认为是解释器文件名的一部分,就变成了 #!/bin/bash\r

    然后 Windows 编辑器默认换行符是 \r\n 不是 \n
    Hopetree
        9
    Hopetree  
       2019-10-29 16:11:03 +08:00   ❤️ 1
    常识问题吧,Windows 上面写的 sh 放到 linux 执行前都要转换成 unix 格式
    Latin
        10
    Latin  
       2019-10-29 16:27:04 +08:00   ❤️ 1
    Linux Vim

    Command
    ```
    set ff=unix
    ```
    orbwalker
        11
    orbwalker  
    OP
       2019-10-29 17:14:43 +08:00
    @ipwx </br>
    谢谢,讲的非常清楚。那 sublime 怎么能将\r\n 变成默认\n ?
    jdhao
        12
    jdhao  
       2019-10-29 18:45:53 +08:00 via Android   ❤️ 1
    @orbwalker 网上搜一下秘籍不会问了
    wnpllrzodiac
        13
    wnpllrzodiac  
       2019-10-29 18:48:10 +08:00 via Android   ❤️ 1
    @chengyiqun 苹果是 \r 懂这个的都是老法师。。。
    Osk
        14
    Osk  
       2019-10-29 18:55:38 +08:00 via Android   ❤️ 1
    @orbwalker sublime 状态栏上好像有切换换行符的按钮,windows 上默认 Windows 换行符,设置里可以改
    lxk11153
        15
    lxk11153  
       2019-10-29 19:18:46 +08:00   ❤️ 1
    @orbwalker #11
    第一种: 菜单 view 里面( 这种问题,把菜单刷刷刷过一遍基本就解决了
    第二种: 设置里添加 "show_line_endings": true 这样就会显示在状态栏了
    lxk11153
        16
    lxk11153  
       2019-10-29 19:21:21 +08:00   ❤️ 1
    是不是可以 bash x.sh 这样执行
    superrichman
        17
    superrichman  
       2019-10-29 19:23:23 +08:00   ❤️ 1
    Sublime Text 配置加一行, 默认用 unix 格式换行
    "default_line_ending": "unix",
    ps1aniuge
        18
    ps1aniuge  
       2019-10-30 19:18:53 +08:00   ❤️ 1
    用 win,Linux 通用的 powershell,

    没有换行问题,
    没有#!/bin/bash 问题。
    没有乱码问题。
    unicode:全中文变量名,函数名,参数名,中文脚本名,等。
    .ps1 脚本带有 bom 头,支持 Linux+vi 编辑。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1238 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 23:05 · PVG 07:05 · LAX 16:05 · JFK 19:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.