2012-05-14 46 views
2

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

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

但是当我运行使用

sh housekeeper.sh 

它给了我下面的错误未在RedHat的OS retured脚本

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

在此先感谢您的帮助

回答

5

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

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

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

如果剧本中某处有显着的回车,这比tr更安全:'sed's/\ r $ //'' –

1

运行dos2unix命令在Windows平台的这个文件,然后运行一下这个

+0

'dos2unix'是将需要的命令 - 不是'unix2dos'。 –

+0

oh mea culpa Dennis – Satya

相关问题