我有用 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
删除 \r
s:
tr -d '\r' < old.sh > new.sh
关于linux - 在 windows 操作系统上运行用 linux 编写的 Shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10587261/