更改多个代码文件中相同变量的值
Change value of same variables in multiple code files
我有多个包含相同变量的 f90 文件
integer,parameter :: ilatmin = 0.5
integer,parameter :: ilatmax = 180
integer,parameter :: ilonmin = 0.5
integer,parameter :: ilonmax = 360
我想编写 shell 脚本或生成文件,在其中我指定每个变量的值并循环遍历每个 .f90 文件并更新每个变量的值。
我想像本例中那样使用搜索和替换 Linux find and replace,但想知道在 bash 脚本中使用 sed 是否是个好主意。
为什么不将这些参数放入 *.f90
文件中 use
的模块中?它可能看起来像:
module myParameters
implicit none
integer,parameter :: ilatmin = 0.5
integer,parameter :: ilatmax = 180
integer,parameter :: ilonmin = 0.5
integer,parameter :: ilonmax = 360
end module
在您的代码中,您可以包含该模块,例如
subroutine foo
use myParameters, only: ilatmin, ilatmax, ilonmin, ilonmax
! ...
end subroutine
现在您只需更改模块 myParameters
...
关于你的问题...使用 sed
这可能看起来像:
for i in *.f90; do
sed -i -e 's/ilatmin = .*$/ilatmin = XYZ/g' \
-e 's/ilatmax = .*$/ilatmax = XYZ/g' \
-e 's/ilonmin = .*$/ilonmin = XYZ/g' \
-e 's/ilonmax = .*$/ilonmax = XYZ/g' $i
done
我有多个包含相同变量的 f90 文件
integer,parameter :: ilatmin = 0.5
integer,parameter :: ilatmax = 180
integer,parameter :: ilonmin = 0.5
integer,parameter :: ilonmax = 360
我想编写 shell 脚本或生成文件,在其中我指定每个变量的值并循环遍历每个 .f90 文件并更新每个变量的值。
我想像本例中那样使用搜索和替换 Linux find and replace,但想知道在 bash 脚本中使用 sed 是否是个好主意。
为什么不将这些参数放入 *.f90
文件中 use
的模块中?它可能看起来像:
module myParameters
implicit none
integer,parameter :: ilatmin = 0.5
integer,parameter :: ilatmax = 180
integer,parameter :: ilonmin = 0.5
integer,parameter :: ilonmax = 360
end module
在您的代码中,您可以包含该模块,例如
subroutine foo
use myParameters, only: ilatmin, ilatmax, ilonmin, ilonmax
! ...
end subroutine
现在您只需更改模块 myParameters
...
关于你的问题...使用 sed
这可能看起来像:
for i in *.f90; do
sed -i -e 's/ilatmin = .*$/ilatmin = XYZ/g' \
-e 's/ilatmax = .*$/ilatmax = XYZ/g' \
-e 's/ilonmin = .*$/ilonmin = XYZ/g' \
-e 's/ilonmax = .*$/ilonmax = XYZ/g' $i
done