最近因为要大量重复的跑一些程序,而且只是参数的小修,所以干脆花点时间整理一个界几个shell脚本,来自动的完成程序的编译及执行。
{:.info}
批量编译Fortran并运行
1 2 3 4 5 6 7 8 9 10
| #!/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文件并编译执行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| #!/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命令
1 2
| alias ps='ps -u yxli' # 查看自己所有进程 alias proid='ps|grep *.out' #查看以out结尾的进程(正好可以配合前面批量编译Fortran来使用)
|
公众号
相关内容均会在公众号进行同步,若对该Blog感兴趣,欢迎关注微信公众号。
{:.info}