Fortran
コードからファイルを削除する必要があります。私はubuntu 12.04, x86_64
です。私は、以下に説明する手順がうまくいかない理由を理解していません。状況を明確にするのを手伝ってください(実際には、システムによっては動作しますが、私のものではありません)。fortranコードからファイルを削除する方法は?
別の方法があります:私は直接UNIXコマンドrm -f file
を呼び出すことができますが、私の方法で何が問題なのかを知りたいと思います。ありがとうございました。
ステップ1は、簡単なスクリプトdel.shを作成し、〜/ビンに
$ 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
どうしたのですか?シンプルな 'source del.sh file'は動作しますが、Fortranコードからは動作しません。これは混乱します。 Fortranコードから
:
100 format('del.sh ',a30)
100 format('bash del.sh ',a30)
仕事完全に、しかし
100 format('sh del.sh ',a30)
は動作しません。私はbash
をインストールしましたが、csh
はありません。ありがとうございました。
を試してみてください、あなたはファイルも「スクラッチ」状態でそれを開き、それを閉じて削除することができることを知っていました。これはすべてのOSで移植可能で、スクリプトを混乱させる必要はなく、OSコマンドでファイルを削除する必要はありません。 – cup
カップと@AlexanderVogt:答えに感謝します。はい、Fortranはファイルを削除できますが、私はそれを知っています。 Fortranコードからスクリプトを呼び出すという考え方は、プログラムをより柔軟にする必要があります。スクリプトは、プロジェクトを再コンパイルせずに、必要に応じて簡単に変更して調整することができます。例えば、ファイルを削除するのではなく、バックアップすることができます。また、別の私の質問は:記載されたアプローチがなぜ機能しないのですか?私はちょうど興味があります... – axion
古いf77標準は実際には単に「SCRATCHは名前付きファイルで指定してはいけません」と言っています。私はどのように名前付きファイルをそのように削除するのが本当に移植性が高いのか分かりません。 – agentp