Ho scritto un programma in IDL per generare grafici a dispersione basati su argomenti della riga di comando. Posso chiamare con successo il programma direttamente nel terminale come questo:Esecuzione del programma IDL da bash con le variabili
idl -e "scatterplot_1_2d_file.pro" $infile $outfile $title $xtitle $ytitle $xmin $xmax $ymin $ymax $timescale
Dove $ * fare riferimento ad alcuni letterali stringa digitata in Il problema è, ho pensato che sarei in grado di scrivere solo che molto linea, mettendo. in nomi variabili al posto dei letterali, in uno script bash e genera un milione di grafici a dispersione mentre sono in pausa. Purtroppo, se lo faccio in questo modo, ottengo l'errore:
idl: -e option cannot be specified with batch files
Quindi il mio prossimo tentativo è stato quello di provare a scrivere i comandi a un file batch IDL che non avevo quindi su Esegui.
Quel tentativo assomiglia a questo:
#!/bin/bash
indir=/path/to/indir/
outdir=/path/to/outdir/
files=`ls $indir`
batchfile=/path/to/tempbatchfile.pro
echo .r "/path/to/scatterplot_1_2d_file.pro" >> $batchfile
for file in $files
do
name=${file%\.*}
echo scatterplot_1_2d_file $indir$name.txt $outdir$name.jpg $name "Gauge Precipitation (mm)" "NMQ Precipitation (mm)" "*" "*" "*" "*" 2 >> $batchfile
done #done file
echo exit >> $batchfile
idl <<EOF
@/path/to/scatterplot_1_2d_file
EOF
rm $batchfile
Non so se la maggior parte degli errori che script genera rilevanti, quindi mi limiterò a postare l'inizio e vi posterò il resto più tardi se ne avete bisogno:
[foo]$ bash script_thing.sh
IDL Version 6.3 (linux x86 m32). (c) 2006, Research Systems, Inc.
Installation number: 91418.
Licensed for personal use by XXXXXXXXX only.
All other use is strictly prohibited.
PRO scatterplot_1_2d_file
^
% Programs can't be compiled from single statement mode.
At: /path/to/scatterplot_1_2d_file.pro, Line 1
% Attempt to subscript ARGS with <INT ( 1)> is out of range.
% Execution halted at: $MAIN$
% Attempt to subscript ARGS with <INT ( 2)> is out of range.
% Execution halted at: $MAIN$
% Attempt to subscript ARGS with <INT ( 3)> is out of range.
% Execution halted at: $MAIN$
% Attempt to subscript ARGS with <INT ( 4)> is out of range.
% Execution halted at: $MAIN$
% Attempt to subscript ARGS with <INT ( 5)> is out of range.
% Execution halted at: $MAIN$
% Attempt to subscript ARGS with <INT ( 6)> is out of range.
% Execution halted at: $MAIN$
% Attempt to subscript ARGS with <INT ( 7)> is out of range.
% Execution halted at: $MAIN$
% Attempt to subscript ARGS with <INT ( 8)> is out of range.
% Execution halted at: $MAIN$
% Attempt to subscript ARGS with <INT ( 9)> is out of range.
% Execution halted at: $MAIN$
non so se sto solo cercando di fare qualcosa che non può essere fatto, ma non sembra come esso. Qualche consiglio?
Dovrete risolvere tutti i [citazione] (http: // mywiki. wooledge.org/Quotes) e correggere la [gestione dei nomi dei file] (http://mywiki.wooledge.org/ParsingLs) prima di poter dare un consiglio specifico. Se sei bloccato dopo, inserisci il nuovo errore. – ormaaj