【发布时间】:2013-09-11 04:57:31
【问题描述】:
我需要从Fortran 代码中删除一个文件。我在ubuntu 12.04, x86_64。我不明白为什么下面描述的过程不起作用。请帮助我澄清情况(实际上,在某些系统上,它有效,但不适用于我的)。
还有一种方法:我可以直接调用unix命令rm -f file,但是我想知道我的方法有什么问题。谢谢。
步骤1.制作简单的脚本del.sh并放入~/bin
$ cat del.sh
[ $# -ge 1 ] && rm -f $1
$ chmod u+x del.sh; mv del.sh ~/bin
步骤 2. Fortran 代码,del.for:
character*100 cmd
character*30 file
call getarg(1,file)
write(cmd,100) file
100 format('source del.sh ',a30)
call system(cmd)
end
步骤 3. 编译并运行:
$ ifort -o del del.for
$ ./del file
结果:
sh: 1: source: not found
怎么了?简单的“源 del.sh 文件”有效,但不是来自 Fortran 代码……这令人困惑。
来自 Fortran 代码:
100 format('del.sh ',a30)
100 format('bash del.sh ',a30)
工作完美,但是
100 format('sh del.sh ',a30)
不起作用。我安装了bash,但没有安装csh。谢谢。
【问题讨论】:
-
你知道一个文件也可以通过以'SCRATCH'状态打开然后关闭它来删除。这可以在所有操作系统中移植,无需弄乱脚本或操作系统命令用于删除文件。
-
cup 和@AlexanderVogt:谢谢你的回答。是的,Fortran 可以删除文件,我知道。从 Fortran 代码调用脚本的想法应该使您的程序更加灵活:脚本可以根据您的需要轻松修改和调整,而无需重新编译项目。例如,我可以备份它而不是删除文件等等。我的另一个问题是:为什么所描述的方法不起作用?我只是好奇...
-
旧的 f77 标准实际上只是简单地说“不能用命名文件指定 SCRATCH”。我不知道以这种方式删除命名文件的便携性如何?
-
@george:好点子。猜猜最好的选择是按照 AlexanderVogt 的建议以旧状态打开并以删除状态关闭。
-
@axion:如果您在脚本顶部添加 #!/bin/sh 是否有效? /bin/sh 存在吗?
标签: linux bash file shell fortran