Probleme avec une boucle if en Cshell

nulle00 Messages postés 21 Statut Membre -  
dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'aurais besoin de votre aide, sur un point particulierement et bien su si vous avez le temps j'ai d'autres petites questions...
Alors tout d'abord, un de mes script ne veut pas s'executer correctement, il m'affiche ce message:
if: Malformed file inquiry.

Voila une partie du script:

if ( $type == "-all") then
source fonction1 $a all
endif

if ( $type == "-per-genre") then
source fonction1 $a per-genre
endif


a est un fichier text recu dans ce script
type est un nom recu par la fonction
fonction1 est une fonction ecrite dans un autre script

Comme vous pouvez le voir les 2 if sont identiques, le premier marche le deuxieme non, apparement il a un probleme avec "-genre" si quelqu'un sait pourquoi ça m'aiderait beaucoup...

Sinon j'ai 2 autres petites question, comment passe t'on a la ligne en cshell dans un echo(un equivalent de /n en C)?
Je n'arrive a executer mes script qu'avec source et non pas avec ./, quelqu'un sait ce que je dois faire?
Merci!!
Configuration: Windows XP
Internet Explorer 7.0

7 réponses

  1. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    est ce que
    source fonction1 $a per-genre
    fonctionne manuellement ?

    echo "aa\nbb" pour un saut de ligne

    faire chmod u+x fichier
    1
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    que répond
    ls -l fichier

    pour le script, supprimer le - pour voir
    source fonction1 $a perXgenre
    que contient $a ?

    essayer
    if ( "$type" == "-per-genre") then

    exécuter en mode debug
    set -x
    1
    1. nulle00 Messages postés 21 Statut Membre 1
       
      ls -l fichier me renvoit:
      -rwxr--r-- 1 nomd'utilisateur users 406 Jun 22 03:23 fichier

      Alors bizarrement maintenant, ./fichier ne me repond plus par le meme message d'erreur apparement, il execute le script mais a quand meme un probleme:
      ./fichier: line 12: syntax error: unexpected end of file
      alors qu'avec source lca marche parfaitement...

      $a contient un fichier texte, qui contient plusieurs lignes sur un sujet donne, ça donne ca a peu pres...:
      arthur 1998 garcon
      lise 1997 fille
      ............
      Meme en suprimant le - cela ne marche pas, mais si je mets aa a la place par exemple, ca marche.

      Comment fait t'on pour executer en mode debug? On m'avait dit qu'il fallait mettre ecrire #!/bin/csh -fx mais ca ne marchait pas chez moi car j'utilisais source et non pas ./
      Merci!
      0
  3. nulle00 Messages postés 21 Statut Membre 1
     
    Oui fonction $a per-genre marche...

    Quand tu fais: echo "aa\nbb" tu obtiens
    aa
    bb
    c'est ca?

    Meme en faisant chmod u+x fichier ./ ne marche pas j'avais essaye, mais ca n'aide pas...

    Merci de m'aider! ;)
    0
  4. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    pour le \n c'est ce que tu veux, non ?

    en faisant ./fichier un message d'erreur ?

    ne pas oublier #!/bin/csh en première ligne
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. nulle00 Messages postés 21 Statut Membre 1
     
    Pour le /n oui c'est bien ce que je voulais, je voulais juste verifier si j'avais bien compris...

    En faisant ./fichier.., il y a:
    ./: Permission denied.

    Oui, j'ecris toujours #!/bin/csh au debut de mes script.

    Pas d'idees pour mon bug dans le if?

    Merci!!
    0
  7. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    il faut corriger l'erreur de syntaxe ligne 12

    passer en paramètre une variable $a contenant plusieurs lignes me semble une source de problèmes

    set -x ou csh -x c'est la même chose
    0
    1. nulle00 Messages postés 21 Statut Membre 1
       
      J'ai essayer de corriger l'erreur de syntaxe mais je n'en ai pas trouve, en plus comment ca se fait qu'avec source ca marche?
      J'ai plusieurs foirs passer en paramètre une variable $a contenant plusieurs lignes et ca ne pose aucun probleme, pour preuve le premier if marche et qu'en je fais: source fonction1 $a per-genre ca marche aussi..
      Pourquoi csh -x n'a aucune action chez moi alors?
      0
  8. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    ce ne sert à rien de répeter qu'avec source ça marche, des erreurs peuvent apparaitre différemment.
    une erreur de guillemets, par. ex. peut générer des erreurs différentes selon le contexte

    ./fichier: line 12: syntax error: unexpected end of file
    ça veut dire qu'il y a une erreur. <- point

    l'exécution d'un script csh peut aussi être influencée par le contenu de .cshrc

    et csh -x fichier
    0