最近因为要大量重复的跑一些程序,而且只是参数的小修,所以干脆花点时间整理一个界几个shell脚本,来自动的完成程序的编译及执行。
批量编译Fortran并运行
#!/bin/sh
#============ get the file name ===========
Folder="/home/yxli/te" #要批量编译哪个文件夹下面的Fortran
for file_name in ${Folder}/*.f90
do
temp_file=`basename $file_name .f90`
ifort -mkl $file_name -o $temp_file.out
./$temp_file.out & # 编译成功之后自动运行
done
rm *out # 删除编译后文件
递归的读取指定文件夹下面的所有Fortran文件并编译执行
#!/bin/bash
function getdir(){
for element in `ls $1`
do
dir_or_file=$1"/"$element
if [ -d $dir_or_file ]
then
getdir $dir_or_file
else # 下面的全是文件
if [ "${dir_or_file##*.}"x = "f90"x ]||[ "${dir_or_file##*.}"x = "f"x ];then # 筛选处特定后缀的文件
dir_name=`dirname $dir_or_file` # 读取目录
file_name=`basename $dir_or_file .f90` # 读取以f90结尾的文件名
out_file_name="$dir_name/$file_name" # 定义编号成功的文件名称
ifort -mkl $dir_or_file -o $out_file_name.out # 编译后文件名以out结尾
dir1=`dirname $out_file_name` # 读取编译成功文件的路径,只提取目录
cd $dir1 # 切换到具体的文件夹
./$file_name.out 1>mes 2>bad & # 执行该文件夹下面编译好的文件
# ./$out_file_name.out 1>mes 2>bad &
# rm $out_file_name.out
fi
fi
done
}
root_dir="/home/yxli/te"
getdir $root_dir
一些自己定义的Linux命令
alias ps='ps -u yxli' # 查看自己所有进程
alias proid='ps|grep *.out' #查看以out结尾的进程(正好可以配合前面批量编译Fortran来使用)
公众号
相关内容均会在公众号进行同步,若对该Blog感兴趣,欢迎关注微信公众号。