#!/bin/bash
path="./binary/"
if [ ! -d $path ]
then
mkdir $path
fi
compile_args=()
main_args=()
flag=0
while [ -n "$1" ]
do
case "$1" in
-c)
shift
flag=0
compile_args[${#compile_args[@]}]=$1;;
-m)
shift
flag=1
main_args[${#main_args[@]}]=$1;;
*)
if [ $flag -eq 0 ]
then
compile_args[${#compile_args[@]}]=$1
else
main_args[${#main_args[@]}]=$1
fi;;
esac
shift
done
name=${compile_args[0]}
binary="${path}${name%.*}"
g++ -o ${binary} --std=c++11 ${compile_args[@]}
${binary} ${main_args[@]}
使用方法:
比如 这个shell名叫cco.sh
执行命令: . cco.sh -c 2_1.cpp -m 11 22
或者. cco.sh -m 11 22 -c 2_1.cpp
-c 后面是g++需要编译的文件名 可以多个
-m 后面是命令行中要传给c++ main函数的参数。
给c++ main函数传参
int main(int argc, char * argv[])
{
std::cout << argc <<std::endl;
std::cout << argv[0] <<std::endl;
std::cout << argv[1] <<std::endl;
std::cout << argv[2] <<std::endl;
return 0;
}
argc就是从命令行给main函数传参的个数
argv就是所有的参数,argv[0] 是文件名