-- 关于 shell 脚本在 windows 上开发问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
orbwalker
V2EX    程序员

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

  •  
  •   orbwalker 2019-10-29 14:19:25 +08:00 3031 次点击
    这是一个创建于 2242 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 ?
    zerofiny
        2
    zerofiny  
       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
    C02TobNClov1Dz56
        4
    C02TobNClov1Dz56  
       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 编辑。
    关于   /span>   帮助文档     自助推广系统     博客     API     FAQ     Solana     3831 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 05:28 PVG 13:28 LAX 21:28 JFK 00:28
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86