2

我有用 RedHat OS 编写的 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 有什么问题。

提前感谢您的帮助

4

2 回答 2

5

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

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

tr -d '\r' < old.sh > new.sh
于 2012-05-14T16:29:35.810 回答
1

在 Windows 上对此文件运行dos2unix命令,然后尝试运行此文件

于 2012-05-14T16:24:13.063 回答