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

时间:2012-05-14 16:22:15

标签: linux bash shell scripting cygwin

我有在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这里有什么问题。

提前感谢任何帮助

2 个答案:

答案 0 :(得分:5)

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

如果您拥有dos2unix命令,则可以使用该命令,或tr删除\r

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

答案 1 :(得分:1)

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