#!/bin/bash
tips="尝试执行 "run --help" 获取更多信息。n"
if [[ $1 = "" ]]
then
printf "缺少参数!n$tips"
elif [[ $1 = "--help" ]]
then
printf "此脚本是C/C++程序的快速编译运行脚本。n用法:nrun filename1 filename2 [...]n注意: n1. gcc/g++的选择取决于首个参数的文件名后缀!!!n
2. 生成的二进制文件名为首个参数的文件名。n3. 本脚本暂时只支持在源代码所在文件下运行,参数仅支持n filename.postfix形式,暂不支持绝对路径和相对路径的形式。n"
else
flag=${1##*.} # 截取首个参数的文件名后缀
if [[ $flag = "cpp" ]] # 根据文件名后缀选择编译器
then
g++ $*
elif [[ $flag = "c" ]]
then
gcc $*
else
printf "不可编译的文件后缀!n$tips"
fi
name=${1%%.*} # 截取文件名
if [ -f $name ] # 若存在同名二进制文件,先删除,避免链接失败
then
rm $name
fi
link a.out $name; rm -f a.out; # 链接并删除中间文件
printf "n"
./$name # 运行编译好的二进制文件
printf "nn"
fi
痛点
在linux下,编译执行一个C/C++程序要键入多个指令,十分繁琐。故编写了该Bash脚本缩减编译执行步骤。
适用范围请注意,该脚本仅适用于少量源码文件的编译及运行,项目级程序的编译运行请使用makefile工具。
使用方法键入如下指令:
vim /usr/local/bin/run # vim中按i进入插入模式 # 将上述脚本粘贴在vim中 # esc回到普通模式 # vim输入:wq保存退出
完成后在任意目录下输入run --help即可查看使用方法。
待完善的地方- 未能做到以下功能:遍历所有文件名,只要发现.cpp就使用g++编译器,否则使用gcc编译器
- 只能在源代码所在文件夹下编译运行,参数只能为文件名+后缀,不能使用绝对路径和相对路径。



