0

クラスターでモデルを実行しようとしていますが、ファイルの場所の名前に [] が含まれているため、openw を使用すると IDL がエラーをスローします (これはいくつかのテスト後の私の結論です)。私がやりたいのは、エスケープ文字を含む少し異なる文字列を IDL にフィードすることです。これを行う1つの方法は正規表現を使用することだと思いますが、いくつかの助けを借りることができ、具体的にはIDLをあまり知りません。

temp_dir='/local/scratch/1940320[2000].cluster.name/temp/area'
openw,12,temp_dir+'file.dat'

送信方法:

temp_dir2='/local/scratch/1940320\[2000\].cluster.name/temp/area'
openw,12,temp_dir2+'file.dat'

数字はクラスターのジョブ ID を表しており、これは実行するまでわかりません。/local/scratch/$PBS_JOBID.cluster.name は $TMPDIR に保持されており、getenv('TMPDIR') ありがとうございます。

4

2 に答える 2

0

ちょっと厄介ですが、これはうまくいくはずです:

IDL> temp_dir = '/local/scratch/1940320[2000].cluster.name/temp/area'
IDL> temp_dir = mg_streplace(temp_dir, '(\[|\])', '\\$1', /global)
IDL> print, temp_dir
/local/scratch/1940320\\[2000\\].cluster.name/temp/area
IDL> temp_dir = mg_streplace(temp_dir, '\\\\', '\', /global)
IDL> print, temp_dir
/local/scratch/1940320\[2000\].cluster.name/temp/area

MG_STREPLACEGitHubで入手できます。

于 2013-05-15T21:32:39.180 に答える