【问题标题】:Cannot run a shell script created on Windows [duplicate]无法运行在 Windows 上创建的 shell 脚本 [重复]
【发布时间】:2015-08-13 19:30:26
【问题描述】:

我似乎遇到了一个奇怪的问题,解决方案可能非常简单,我只是瞎了眼。

我的开发环境是 Windows。我创建了一个部署存档文件,其中包含一个 shell 脚本文件(称为 install.sh)。我将这个存档 sftp 到一个 linux 环境,解压它并尝试运行执行脚本(在 chmod 使其可执行之后),我得到这个错误:

语法错误:文件意外结束

我没有注意到文件中有任何错误。我删除了这个文件,创建了一个新的 install.sh,复制了我的 Windows 环境中的确切内容,再次对其进行 chmod,再次运行它,这次它运行良好!

我不知道为什么我第一次解压它时它没有运行。任何帮助表示赞赏!

【问题讨论】:

    标签: linux windows bash shell


    【解决方案1】:

    检查您的文件:

    cat --show-nonprinting file
    

    从 Windows/DOS 中删除回车:

    tr -d "\r" < file > fixed_file
    

    【讨论】:

    • 看起来是回车导致了它。但是我不能使用 tr,而是使用了这个: sed -i -e 's/\r//g' install.sh
    【解决方案2】:

    Linux 和 Windows 使用不同的行尾(CL 或 CLRF),或者可能是编码问题。您应该检查正在运行的 sh 和非运行的 sh 之间的差异。

    【讨论】:

      猜你喜欢
      • 2015-12-10
      • 2021-05-30
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-27
      • 2013-03-22
      • 1970-01-01
      相关资源
      最近更新 更多