我写了一个小的Bash脚本,从命令行读取时遇到问题。我认为这是因为我在Windows上编写了脚本。这是代码:
read NEW_MODX_PROJECT
和调试模式的输出
+ read $'NEW_MODX_PROJECT\r'
最后,我得到了错误
': Ist kein gültiger Bezeichner.DX_PROJECT
我认为在英语中它应该表示“':不是有效的标识符.DX_PROJECT”
在Windows上编写它时,它运行正常。我使用console2来测试它正在使用sh.exe。
答案 0 :(得分:2)
您的断言是正确的 - Windows使用CRLF行分隔符,但Linux只使用LF。
您的奇怪错误消息的原因是,在打印变量名称时,它包含回车符作为其名称的一部分 - 终端然后跳回第一列以打印其余的错误消息(用它的结尾覆盖消息的开头。)
有一组称为dos2unix
和unix2dos
的实用程序可用于在格式之间轻松转换,例如:
dos2unix myscript.sh
如果您碰巧没有它们,您可以使用tr
:
tr -d '\r' < myscript.sh > myscript-new.sh
要么删除所有回车,要么不要混淆。