0

我写了一个小 Bash 脚本,从命令行读取时遇到问题。我认为是因为我在 Windows 上编写了脚本。这是代码:

read NEW_MODX_PROJECT

和调试模式的输出

+ read $'NEW_MODX_PROJECT\r'

最后在这里我得到的错误

': Ist kein gültiger Bezeichner.DX_PROJECT

我认为在英语中它应该表示“':不是有效的标识符.DX_PROJECT”

在 Windows 上编写它时,它运行良好。我使用console2来测试它使用的是sh.exe。

4

1 回答 1

2

您的断言是正确的——Windows 使用 CRLF 行分隔符,但 Linux 只使用 LF。

出现奇怪错误消息的原因是,在打印变量的名称时,它包含回车作为其名称的一部分——然后终端跳回第一列以打印错误消息的其余部分(这会覆盖消息的开头和结尾)。

有一组实用程序dos2unixunix2dos您可以使用它们轻松地在格式之间进行转换,例如:

dos2unix myscript.sh

如果您碰巧没有它们,您可以使用以下方法实现相同的目的tr

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

任何一个都会去掉所有的回车,并且应该不会混淆。

于 2013-09-20T00:09:20.593 回答