Codenvy 中命令的正确格式

Correct format for a command in Codenvy

Codenvy 是一个 IDE,它会在您工作的环境进入休眠状态时删除 gitignore 中的所有文件。所以每次我开始在 Codenvy 工作时,我都需要把这些文件放回去。这很麻烦,因此我试图为此添加在 Codenvy 中称为命令(脚本)的内容。

我有以下内容:

1. cp vars-user-portal/variables.env user-portal/variables.env
2.
3. cp vars-user-portal/serviceAccountKey.json user-portal/serviceAccountKey.json
4.
5. cp vars-user-portal/.env user-portal/client/.env
6.
7. cd user-portal && npm install
8.
9. cd user-portal/client && npm install
10.
11. xdg-open user-portal/client/.env

当我 运行 这个命令时,我得到输出:

/bin/bash: line 1: $'\r': command not found
/bin/bash: line 3: $'\r': command not found
/bin/bash: line 5: $'\r': command not found

Usage: npm <command>
...
Did you mean one of these?
    install
    uninstall
    unstar

/bin/bash: line 7: $'\r': command not found

Usage: npm <command>
...

/bin/bash: line 9: $'\r': command not found
xdg-open: file '.env' does not exist

我的印象是,当一行中有空格时,它会将其视为单独的命令。知道如何让这个脚本工作吗?

您的文件很可能有 \r\n 行结尾,应更改为 \n 行结尾。

使用命令行 sed 实用程序转换文件的简单方法如下。

sed -i 's/\r\n/\n/g' "./path/to/file"(未测试)。


一般来说,Windows 应用程序在文本文件中以 'carriage return' 和 'line feed' 字符终止行,通常写为转义码 \r\n.

另一方面,类 Unix 系统仅使用换行符或 new 作为行尾终止行,Unix 仅使用 'line feed' 字符 \n.

参见:http://www.cs.toronto.edu/~krueger/csc209h/tut/line-endings.html


注:

另外提一下,如果脚本是可执行的,您应该始终在脚本的顶部添加一个 shebang,否则如果它是单独的来源,则不要添加。 #!/bin/bash 用于 bash 脚本,#!/bin/sh 用于可移植或 POSIX 兼容的脚本。