在Windows操作系统上运行用Linux编写的Shell脚本

KIt*_*tis 2 linux bash shell scripting cygwin

我有用RedHat OS编写的shell脚本.我需要在windows environemtn中运行此脚本.

所以我用cygwin在windows上运行脚本.

但是当我使用脚本运行时

sh housekeeper.sh 
Run Code Online (Sandbox Code Playgroud)

它给了我跟随在RedHat OS中没有恢复的错误

line 12: $'\r': command not found
Run Code Online (Sandbox Code Playgroud)

但是我的脚本的第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
Run Code Online (Sandbox Code Playgroud)

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

提前感谢您的帮助

Fat*_*ror 5

很可能cygwin sh期待一个UNIX行分隔符(即\n),而是找到一个Windows行分隔符,\r\n因此尝试执行\r就像它是一个命令一样.如果您在基于Windows的文本编辑器中编辑此脚本,则很容易发生这种情况.

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

tr -d '\r' < old.sh > new.sh
Run Code Online (Sandbox Code Playgroud)