制作一个 bash 脚本来编译/执行 C++

制作一个 bash 脚本来编译/执行 C++

我正在尝试编写一个可以编译 test.cpp 的简单脚本,但无法使其工作。我按如下方式运行该脚本:

> bash make.sh

并出现以下错误:

: No such file or directory
g++: no input files
make.sh: line 3: ./test.out: No such file or directory

这是make.sh:

#!/bin/sh
g++ -o ./test.out ./test.cpp
./test.out

我尝试过不使用“ ./ ”,但仍然不起作用。我在 Windows 7 上运行 Cygwin,并安装了所有正确的软件包(我可以从 shell 本身编译和运行,但不能从脚本编译和运行)。

答案1

您是make.sh用记事本创建的吗?如果是,则每行都以CR(回车符) 和LF(换行符) 结尾。Cygwin 及其类 Unix 程序无法处理这种情况;Unix 期望文本文件中的行仅以LF(Unix 称之为“换行符”) 结尾。使用 Cygwin 编辑器(例如vi或)编辑文件并修复它。如果您无法做到这一点,请尝试在每行末尾vim添加“ ”;这应该会导致将有问题的s 视为注释。; #bashCR

扩展上述内容:如果我的理论是正确的,那么第二行如下make.sh所示:

g++ -o ./test.out ./test.cppCR

加上LF应该存在的(bash排除在考虑范围之外)。因此,g++正在寻找名为“ ./test.cppCR”的文件,当然,该文件不存在。因此它说:

./test.cppCR: No such file or directory

但是,由于回车符的存在,这会导致: No such file or directory覆盖./test.cpp,所以这: No such file or directory就是您所看到的全部。

相关内容