特定のファイルをバックアップ場所にコピーするFortran 90コードにコマンドを含めることを試みています。単純にファイルをコピーすると、コードはファイル名に数字を付加したファイルをコピーするbashのライナーが1つ
cp -f myfile.nml output/codebkp/myfile.nml
となりますが、以前のファイルがあるかどうかを特定できるものを探していました。たとえば、前にファイルが存在しない場合は、myfile.nml.00
にコピーします。ディレクトリに既にmyfile.nml.02
がある場合は、myfile.nml.03
にコピーします。
私はFortranコードに入れているので一種のライナーでなければならないので、私はCALL SYSTEM()
ステートメントを使用することを余儀なくされました。私が作ることができ
最高の試みが
cp myfile.nml output/codebkp/myfile.nml.$((`ls output/codebkp/myfile.nml.* | awk '{print $NF}' | awk -F '.' '{print $NF}'`+1))
のようなものですが、(驚くべきことに、まだ種類のエラーでさえも動作しますが)それは私に何のファイルがありませんエラーを与え、もう動作しません。 2つのファイルの後に私にこのエラーを与えます
bash: 1
2+1: syntax error in expression (error token is "2+1")
アイデアはありますか?
ところで、私はそこからそれを行うには良い方法がないことを知っているので、私はFortranでこのようにしています。しかし、CALL SYSTEM()
以外の方法があれば教えてください!
が(Fortranで)あなたは、単に問い合わせ・バイ・ファイル名でループを持つことはできません心、あるいはそれがためにはbashがありますか? – francescalus
複数行のbash(またはPythonなどの)スクリプトを作成してファイルに保存し、fortranのone-linerコマンドを使用してそのファイルを呼び出すことができます。 –
@francescalus私は本当によくfortranを知らない。私はできると思うが、私はちょうど方法を知らない。私はfortranで事実上ゼロ経験を持っています – TomCho