L'exécution IDL programme de bash avec des variables

J'ai écrit un programme en IDL pour générer des nuages de points basé sur des arguments de ligne de commande. Je peux appeler avec succès le programme directement dans le terminal comme ceci:

idl -e "scatterplot_1_2d_file.pro" $infile $outfile $title, $xtitle $ytitle $xmin $xmax $ymin $ymax $échelle de temps

Où $* reportez-vous à certains littéraux de chaîne tapée. Le problème c'est que je pensais que je serais en mesure de simplement taper que très la ligne, en mettant dans les noms de variable à la place de la littéraux, dans un script bash, et de générer un million de nuages de points alors que je suis en pause. Malheureusement, si je le fais de cette façon, j'obtiens l'erreur:

idl: l'option-e ne peut pas être spécifié avec des fichiers de commandes

Donc ma prochaine tentative a été d'essayer d'écrire ces commandes à un IDL fichier de commandes que je ne puis exécuter.

Qui tentent ressemble à ceci:

#!/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

Je ne sais pas si la majeure partie des erreurs de script génère sont pertinentes, donc je vais juste poster le début et je vais poster le reste plus tard si vous en avez besoin:

[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$          

Je ne sais pas si je suis juste en train de faire quelque chose qui ne peut pas être fait, mais il ne SEMBLE pas comme elle. Des conseils?

Vous aurez à résoudre tous les citant les erreurs et de corriger le gestion des noms de fichiers, avant de nous donner des conseils spécifiques. Si vous êtes coincé, après que, après la nouvelle erreur.

OriginalL'auteur Frank Harris | 2012-06-22