【问题标题】:C shell script for gcc compilergcc 编译器的 C shell 脚本
【发布时间】:2018-04-14 09:31:59
【问题描述】:

我想编写一个脚本来测试我的 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 

如果我想执行脚本,这是我得到的错误

https://imgur.com/a/zIl55

在图片中你可以看到我的问题 如果我“手动”编译 C 文件,它没有问题,但如果我执行包含相同语句的脚本,它就不起作用。
如果我只想编译并且只在我的脚本中编写用于编译的命令,它可以工作,但是一旦我添加了 echo 或任何其他命令,它就不会工作。

我在 Windows 下使用 Ubuntu Shell。

任何帮助将不胜感激。

【问题讨论】:

    标签: c windows shell gcc windows-subsystem-for-linux


    【解决方案1】:

    我的猜测:您使用仅限 Windows 的编辑器(如记事本)编写脚本,因此它使用了 Windows 换行符(\r\nAKACRLF)。 bashmain.c\r 作为参数传递给 gcc,它找不到它。打印出错误,终端将 \r 解释为回车符,因此,它进入第 1 列并打印消息的其余部分,这会导致您看到奇怪的事情。

    您可以通过在您的脚本上运行dos2unix 来检查是否是这种情况,如果现在它可以正常工作,那就是我所怀疑的。

    解决方案:使用更严格的编辑器和/或确保它编写 Unix 换行符(普通的 \n,AKA LF)。

    【讨论】:

    • 感谢您的帮助我尝试了vi编辑器,它运行良好非常感谢您
    • TBH,尽管我喜欢 vi 并且鄙视任何没有 vi 键绑定的编辑器,但支持 Unix 行尾的不那么硬核的替代品还有很多... :-) 几乎任何东西除了记事本之外(例如 Notepad++ 是一种流行的替代品,并且确实支持 Unix 行尾)。只需确保在第一次保存文件时选中相应的选项即可。
    • 非常感谢,这对像我这样的初学者很有帮助,vi 编辑器肯定是一个很棒的编辑器,但对于像我这样的初学者来说,它非常难以承受,Notepad++ 非常适合我的需要,非常感谢您的建议:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    相关资源
    最近更新 更多