linux - 在 windows 操作系统上运行用 linux 编写的 Shell 脚本

标签 linux bash shell scripting cygwin

我有用 RedHat 操作系统编写的 shell 脚本。我需要在 Windows environemtn 中运行这个脚本。

所以我使用 cygwin 在 Windows 上运行脚本。

但是当我使用

运行脚本时
sh housekeeper.sh 

它给了我以下错误,在 RedHat OS 中没有返回

line 12: $'\r': command not found

但是我脚本的第 12 行是空的

  08  #
  09  ######################################################################
  10  #### PARAMETERS TO SET BEGIN
  11  ######################################################################
  12  
  13  # archive setttings
  14  ARCHIVE_USER=abc                      # archive storage user name  (default)
  15  ARCHIVE_GROUP=app                     # archive storage user group (default)
  16  ARCHIVE_PATH=/test/file               # archive storage directory (default)
  17  ARCHIVE_DELAY=+8

谁能告诉我这里的脚本或这里的 cygwin 有什么问题。

在此先感谢您的帮助

最佳答案

很可能 cygwin sh 需要 UNIX 行分隔符(即 \n),但却找到了 Windows 行分隔符,\r\n,因此试图像执行命令一样执行 \r。如果您在基于 Windows 的文本编辑器中编辑此脚本,则很容易发生这种情况。

如果你有命令 dos2unix 你可以使用它,或者 tr 删除 \rs:

tr -d '\r' < old.sh > new.sh

关于linux - 在 windows 操作系统上运行用 linux 编写的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587261/

相关文章:

linux - 配置 linux 输出流

python - 在 Eclipse 中编译 C++ 方法并从 python 调用 C++ 方法时出现问题

linux - Tomcat 8 在 Linux 上运行,远程调试连接已从 Eclipse 建立,但断点不会停止

arrays - 括号问题和使用 sqlplus 和 Shell 脚本声明数组

bash - FFMPEG:终端:输出名称包括在输出标题中以 ".mov"结尾的原始文件:如何删除

postgresql - psql 显示 ansi 彩色文本

linux - 嵌入式linux中rootfs中有多个源文件时如何构建?

linux - 监听音频线

bash - 如何通过命令行获取随机的32位十六进制字符串?

python - 禁用 argparse 参数的正则表达式