[KSH] Erreur dans un case...

Erreur dans un case... [KSH] - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 21-12-2005 à 14:48:25    

Bonjour à tous
 
Bon je débute en Korn Shell et j'ai un batch a faire au taf dont voici le code :
 

Code :
  1. case $1 in
  2. -g)
  3.  #Connect to FTP server where user files are
  4.  #Only files with ".xls" extension and beginning by "KPI_" prefix are downloaded (see mget pattern)
  5.  print "****************************"
  6.  print "*   Recovering XLS files   *"
  7.  print "****************************"
  8.  ftp -n -i $FTP_HOST << END_SCRIPT
  9.  user $FTP_USER $FTP_PASSWD
  10.  cd $FTP_USER_DIR
  11.  mget KPI_*.xls
  12.  bye
  13.  END_SCRIPT
  14.  for file in `ls *.xls`
  15.  do
  16.   mv ./$file $LOCAL_PROCESS_DIR
  17.  done
  18.  #Files are copied from process directory to archive directory (we need to keep a log of which files have been processed).
  19.  print "************************"
  20.  print "*   XLS files backup   *"
  21.  print "************************"
  22.  for file in `ls $LOCAL_PROCESS_DIR/*.xls`
  23.  do
  24.   print "Archiving $file\n"
  25.   cp $file $LOCAL_ARCHIVE_DIR
  26.  done
  27.  
  28.  #Excel files are converted in CSV files
  29.  print "*** Launch XLS to CSV conversion ***\n"
  30.  for file in `ls $LOCAL_PROCESS_DIR/*.xls`
  31.  do
  32.   print "Converting $file\n"
  33.   $LOCAL_SCRIPT_DIR/xls2csv.pl $file
  34.  done
  35.  
  36.  #The first file in the directory is parsed in order to know which KPI it contains
  37.  if file=$(ls $LOCAL_PROCESS_DIR | head -1 | grep METAL); then
  38.   mv $LOCAL_PROCESS_DIR/$file $LOCAL_PROCESS_DIR/KPI_METAL.CSV
  39.  elif file=$(ls | head -1 | grep CORPORATE); then
  40.   mv $LOCAL_PROCESS_DIR/$file $LOCAL_PROCESS_DIR/KPI_CORPORATE.CSV
  41.  elif file=$(ls | head -1 | grep CORF13_KPI1); then
  42.   mv $LOCAL_PROCESS_DIR/$file $LOCAL_PROCESS_DIR/KPI_CORF13_KPI1.CSV
  43.  elif file=$(ls | head -1 | grep CORF13_KPI2); then
  44.   mv $LOCAL_PROCESS_DIR/$file $LOCAL_PROCESS_DIR/KPI_CORF13_KPI2.CSV
  45.  elif file=$(ls | head -1 | grep BUDGET_CORF3_KPI1); then
  46.   mv $LOCAL_PROCESS_DIR/$file $LOCAL_PROCESS_DIR/KPI_BUDGET_CORF3_KPI1.CSV
  47.  elif file=$(ls | head -1 | grep BUDGET_CORF3_KPI2); then
  48.   mv $LOCAL_PROCESS_DIR/$file $LOCAL_PROCESS_DIR/KPI_BUDGET_CORF3_KPI2.CSV
  49.  fi
  50.  
  51.  #We delete all the Excel files in the process directory and keep only CSV ones
  52.  for file in `ls $LOCAL_PROCESS_DIR/*.xls`
  53.  do
  54.   print "Deleting $file\n"
  55.   rm $file
  56.  done
  57.  ;;
  58. -d)
  59.  rm $LOCAL_PROCESS_DIR/KPI_METAL.CSV
  60.  rm $LOCAL_PROCESS_DIR/KPI_CORPORATE.CSV
  61.  rm $LOCAL_PROCESS_DIR/KPI_CORF13_KPI1.CSV
  62.  rm $LOCAL_PROCESS_DIR/KPI_CORF13_KPI2.CSV
  63.  rm $LOCAL_PROCESS_DIR/KPI_BUDGET_CORF3_KPI1.CSV
  64.  rm $LOCAL_PROCESS_DIR/KPI_BUDGET_CORF3_KPI2.CSV
  65.  ;;
  66. *)
  67.  echo "Use option -g (get files and convert it to CSV) or -d (delete processed file)"
  68.  ;;
  69. esac


 
Le problème c est que j'ai l'erreur suivante à l'execution : ./getKPI.sh[15]: syntax error at line 24 : `<<' unmatched
 
Chose bizarre quand je sors le morceau de code lié à la connexion ftp du case et ben j'ai pas cette erreur tout marche nikel
 
Si quelqu'un pouvait m'éclairer
 
Merci bcp


Message édité par Oreste le 21-12-2005 à 14:49:57
Reply

Marsh Posté le 21-12-2005 à 14:48:25   

Reply

Marsh Posté le 21-12-2005 à 16:05:21    

C est vraiment chelou ma partie de connexion FTP ne fonctionne pas quand elle dans un case ou dans un test ! ca me retourne une erreur à l execution

Reply

Marsh Posté le 22-12-2005 à 17:00:32    

:bounce:

Reply

Marsh Posté le 24-12-2005 à 22:24:47    

Un "here document" ne doit pas être  indenté sur son tag de fin :
ftp <blabla>  <<EOF
   <xx>
  <xx>
  EOF
=>  pas bon
ftp <blabla>  <<EOF
   <xx>
  <xx>
EOF
=> OK

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed