更改多个代码文件中相同变量的值

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