用于 gcc 编译器的 C shell 脚本
C shell script for gcc compiler
我想编写一个脚本来测试我的 c 程序,但我不知道为什么它不起作用
我用一个简单的代码测试了它,所以我确定问题不是因为 C 文件。
我的 C 代码是:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello World\n");
return 0;
}
我的 Shell 脚本是:
gcc -o main main.c
echo "Hello world"
如果我执行脚本,我会在控制台上收到错误消息
: No such file or directory
gcc: fatal error: no input files
compilation terminated
如果我想执行脚本,这是我得到的错误
在图片中你可以看到我的问题
如果我“手动”编译 C 文件,它没有问题,但如果我执行包含相同语句的脚本,它就不起作用。
如果我只想编译并且只在我的脚本中编写用于编译的命令,它就可以工作,但是只要我添加一个回显或任何其他命令,它就不会工作。
我在 Windows 下使用 Ubuntu Shell。
如有任何帮助,我们将不胜感激。
我的猜测:您使用仅 Windows 的编辑器(例如记事本)编写了脚本,因此它使用了 Windows 换行符(\r\n
又名 CRLF
)。 bash
将 main.c\r
作为参数传递给 gcc,gcc 找不到它。打印出错误,终端将 \r
解释为回车 return 字符,因此,它进入第 1 列并打印消息的其余部分,这会导致您看到奇怪的事情。
您可以通过 运行 dos2unix
检查您的脚本是否属于这种情况,如果它现在可以正常工作,那就是我所怀疑的。
解决方案:使用更严格的编辑器 and/or 确保它写入 Unix 换行符(普通 \n
,又名 LF
)。
我想编写一个脚本来测试我的 c 程序,但我不知道为什么它不起作用 我用一个简单的代码测试了它,所以我确定问题不是因为 C 文件。
我的 C 代码是:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello World\n");
return 0;
}
我的 Shell 脚本是:
gcc -o main main.c
echo "Hello world"
如果我执行脚本,我会在控制台上收到错误消息
: No such file or directory
gcc: fatal error: no input files
compilation terminated
如果我想执行脚本,这是我得到的错误
在图片中你可以看到我的问题
如果我“手动”编译 C 文件,它没有问题,但如果我执行包含相同语句的脚本,它就不起作用。
如果我只想编译并且只在我的脚本中编写用于编译的命令,它就可以工作,但是只要我添加一个回显或任何其他命令,它就不会工作。
我在 Windows 下使用 Ubuntu Shell。
如有任何帮助,我们将不胜感激。
我的猜测:您使用仅 Windows 的编辑器(例如记事本)编写了脚本,因此它使用了 Windows 换行符(\r\n
又名 CRLF
)。 bash
将 main.c\r
作为参数传递给 gcc,gcc 找不到它。打印出错误,终端将 \r
解释为回车 return 字符,因此,它进入第 1 列并打印消息的其余部分,这会导致您看到奇怪的事情。
您可以通过 运行 dos2unix
检查您的脚本是否属于这种情况,如果它现在可以正常工作,那就是我所怀疑的。
解决方案:使用更严格的编辑器 and/or 确保它写入 Unix 换行符(普通 \n
,又名 LF
)。