【问题标题】:.sh file created on windows cannot run on linux在 windows 上创建的 .sh 文件无法在 linux 上运行
【发布时间】:2018-10-11 02:06:48
【问题描述】:

我在windows上使用python生成.sh文件,只用file.open(),file.write() .但是当我在linux上运行这个.sh时,它会报如下错误。

/bin/bash^M:错误的解释器:没有这样的文件或目录

我生成的.sh文件的内容:

#!/bin/bash
export ICS_START=/rdrive/ics/itools/unx/bin/
source $ICS_START/icssetup.sh
......

我发现 vim 将其识别为 dos 文件。我猜是不是换行符有问题。

在我的 python 代码中,我使用file.write('xxxx\n')。据我所知,'\n' 是 linux/unix 上的换行符,'\r\n' 是 Windows 上的换行符。我不知道为什么在被linux识别时仍然有^M,因为我只写'\n'

任何帮助将不胜感激。

【问题讨论】:

标签: python linux shell


【解决方案1】:

您需要以二进制模式打开文件,否则它会将换行符转换为本地操作系统的格式。如果您在 Windows 上运行该脚本,这意味着它在写入文件时会将 \n 转换为 \r\n

with open("filename.sh", "wb") as file:

mode 参数中的b 告诉它使用二进制模式。

【讨论】:

  • 是的。我使用 file.write(bytearray(string, 'utf-8')) 尝试了'wb' 模式。它有效。
猜你喜欢
  • 1970-01-01
  • 2019-12-10
  • 2018-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多