linux - windows环境下运行Linux Shell脚本

标签 linux bash shell unix scripting

我一直在尝试在 Windows 机器上运行 Linux shell 脚本。要在 Windows 环境中运行脚本,我选择了 Cygwin。

当我第一次开始使用 cygwin 运行脚本时,我首先遇到了以下问题。

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

要解决此问题,请使用 dos2unix 命令并从旧的 shell 脚本生成新的 shell 脚本

当我运行这个新生成的脚本时,它再次返回一个错误

housekeeper.sh: 2: Syntax error: newline unexpected

以下是 dos2unix 生成的脚本。

>#!/bin/bash
>>#
>># Date  : 2012-03-22 (yyyy-mm-dd)

有人能给我解释一下这里的第 2 行有什么问题吗?

在此先感谢您的帮助

以下是我尝试运行的脚本的顶部,这是我使用 dos2unix 命令转换后得到的脚本

>#!/bin/bash
>>#
>># Date  : 2012-03-22 (yyyy-mm-dd)
>># Modified by   : ABC
>># Goal          : Draft version for X house keeping environment
>>#
>># Description : This script perform housekeeping of XYS products.
>>#
>>######################################################################
>>#### PARAMETERS TO SET BEGIN
>>######################################################################
>>
>># archive setttings
>>ARCHIVE_USER=user1                               # archive storage user name (default)
>>ARCHIVE_GROUP=gapp                              # archive storage user group (default)
>>ARCHIVE_PATH=/product/file                        # archive storage directory (default)
>>ARCHIVE_DELAY=+8                              # archive files older than delay (in days)
>>
>># purge setttings
>>PURGE_DELAY=+30                                   # purge files older than delay   (in days)

最佳答案

这听起来像是行终止问题(Windows 使用回车、换行,而 Unix 仅使用换行)。您可以使用转换行终止符的 dos2unix(和 unix2dos)更正这些问题。

尝试:

$ dos2unix myscript.sh

关于linux - windows环境下运行Linux Shell脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10595182/

相关文章:

Linux - 通过将最后一个连字符替换为 '##' 来重命名所有文件

bash - 如何使用 awk 匹配独特的模式?

bash - 如何在Docker Quickstart Terminal中编辑.py脚本?

linux - 如何在远程服务器上以 root 身份执行本地脚本?

linux - 使用 CSV 文件名列表将文件从一个目录复制到另一个目录的 Shell 脚本

linux - 如何在 linux 中返回文件中第一次出现文本的行号

bash - LINES 和 COLUMNS 环境变量在脚本中丢失

linux - 为 x64 系统调用编译的 x32 ASM(使用 NASM)不起作用

linux - MTD 设备的逻辑删除 block 大小可以增加吗?

linux - VMIN=0 + select(),可能是内核错误?