2016-11-29 62 views
0

我想编写一个脚本来编写更快的代码。我想编译一个XYZ.cpp文件,我希望输出是XYZ.out。用于编译C++的脚本

这里是我的脚本:

#!/bin/bash 

# getting the part before .cpp 
var1=`echo "$1" | cut -d"." -f1` 

# compile 
g++ -std=c++11 -Wall -pedantic -Wno-long-long "$1" -o "$var1.out" -lm 

我运行它:ccc program.cpp

脚本运行,但输出仍是a.out。我究竟做错了什么?

+0

如果你回应'$ var1'的值,它是什么? –

+0

用'xtrace'运行脚本,例如:'bash -x ccc program.cpp'。这将显示所有扩展并澄清正在发生的事情。 – cdarke

回答

0

只需使用的bash's built-in parameter expansion features之一删除的$1匹配“的.cpp”末尾的任何部分:

#!/bin/bash 
g++ -std=c++11 -Wall -pedantic -Wno-long-long -o "${1%%.cpp}.out" -lm "$1" 

我也感动的源文件是最后一个参数,以G ++,所以很明显选项是(和结束)。