Fortran Coder

查看: 18050|回复: 5
打印 上一主题 下一主题

[编辑器] linux系统下查找fortran程序中的值

[复制链接]

4

帖子

1

主题

0

精华

新人

F 币
17 元
贡献
12 点
跳转到指定楼层
楼主
发表于 2020-9-22 19:59:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
5F 币
我有一个fortran程序 xx.f90,绝对路径是path,现在linux服务器上运行,需要用到grep命令查找程序中赋值的变量,比如有一个变量是
[Fortran] 纯文本查看 复制代码
kn= 3D0

我想将这个变量值根据变量名 kn 查找出来,然后将这个值赋给 a,使用的命令是
[Fortran] 纯文本查看 复制代码
#!/bin/bash
#
a=`grep 'pn_max= ' path/xx.f90`

报错信息是 syntax error near unexpected token `*,*'
不知问题出在哪里?请大佬指教

分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

213

帖子

2

主题

0

精华

宗师

F 币
2131 元
贡献
875 点

规矩勋章

沙发
发表于 2020-9-22 21:18:18 | 只看该作者
本帖最后由 风平老涡 于 2020-9-22 21:38 编辑

a="$(grep 'pn_max= ' path/xx.f90)"
不过,grep只能查找pattern,没法赋值。

回复

使用道具 举报

4

帖子

1

主题

0

精华

新人

F 币
17 元
贡献
12 点
板凳
 楼主| 发表于 2020-9-22 21:47:37 | 只看该作者
风平老涡 发表于 2020-9-22 21:18
a="$(grep 'pn_max= ' path/xx.f90)"
不过,grep只能查找pattern,没法赋值。

谢谢您!!
我再详细描述一下我的问题哈,fortran那一行写的是
[Fortran] 纯文本查看 复制代码
    pn_max= 50.8D0, & !mol DIN/mol biomass N/day

我输入了命令
[Fortran] 纯文本查看 复制代码
a=`grep 'pn\_max= ' /home/mgdu/EZMGA/EZM/EZM.f90`;echo $a

会显示出结果

回复

使用道具 举报

4

帖子

1

主题

0

精华

新人

F 币
17 元
贡献
12 点
地板
 楼主| 发表于 2020-9-22 21:48:11 | 只看该作者
风平老涡 发表于 2020-9-22 21:18
a="$(grep 'pn_max= ' path/xx.f90)"
不过,grep只能查找pattern,没法赋值。

接上条回复
但是将命令写成脚本的时候,如下
[Fortran] 纯文本查看 复制代码
a="$(grep 'pn_max= ' path/xx.f90)"
echo $a

就会出现



将脚本按照您的建议修改后,还是会出现这种报错,也不知道是哪里的问题

回复

使用道具 举报

213

帖子

2

主题

0

精华

宗师

F 币
2131 元
贡献
875 点

规矩勋章

5#
发表于 2020-9-23 11:33:27 | 只看该作者
本帖最后由 风平老涡 于 2020-9-23 11:57 编辑
Siemer 发表于 2020-9-22 21:48
接上条回复
但是将命令写成脚本的时候,如下
[mw_shl_code=fortran,true]a="$(grep 'pn_max= ' path/xx.f ...

试试 a=$(grep 'pn_max= ' path/xx.f90)


export a="$(grep 'pn_max= ' path/xx.f90)"

命令行与脚本有时会有少许差别,看一下man bash中的interactive项目。

回复

使用道具 举报

4

帖子

1

主题

0

精华

新人

F 币
17 元
贡献
12 点
6#
 楼主| 发表于 2020-9-23 22:22:53 | 只看该作者
本帖最后由 Siemer 于 2020-9-23 22:23 编辑
风平老涡 发表于 2020-9-23 11:33
试试 a=$(grep 'pn_max= ' path/xx.f90)

谢谢您!
解决啦!
原因是pn_max这个变量的赋值语句里有其他字符,我换成了
[Fortran] 纯文本查看 复制代码
a1=`grep 'pn_max= ' path/EZM.f90`
echo $a1
sed -i "s|$a1|\    pn_max= 50.8D0\, \&|g" path/EZM.f90

就可以实现啦
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-11-23 10:56

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表