无法读取Bash中的var

时间:2013-09-19 23:58:33

标签: linux windows bash

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

read NEW_MODX_PROJECT

和调试模式的输出

+ read $'NEW_MODX_PROJECT\r'

最后,我得到了错误

': Ist kein gültiger Bezeichner.DX_PROJECT

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

在Windows上编写它时,它运行正常。我使用console2来测试它正在使用sh.exe。

1 个答案:

答案 0 :(得分:2)

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

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

有一组称为dos2unixunix2dos的实用程序可用于在格式之间轻松转换,例如:

dos2unix myscript.sh

如果您碰巧没有它们,您可以使用tr

实现相同目标
tr -d '\r' < myscript.sh > myscript-new.sh

要么删除所有回车,要么不要混淆。