我正在尝试编写一个可以编译 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 视为注释。; #
bash
CR
扩展上述内容:如果我的理论是正确的,那么第二行如下make.sh
所示:
g++ -o ./test.out ./test.cpp
CR
加上LF
应该存在的(bash
排除在考虑范围之外)。因此,g++
正在寻找名为“ ./test.cpp
CR”的文件,当然,该文件不存在。因此它说:
./test.cpp
CR: No such file or directory
但是,由于回车符的存在,这会导致: No such file or directory
覆盖./test.cpp
,所以这: No such file or directory
就是您所看到的全部。