Probleme avec une boucle if en Cshell

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. Contributeur
    est ce que
    source fonction1 $a per-genre
    fonctionne manuellement ?

    echo "aa\nbb" pour un saut de ligne

    faire chmod u+x fichier
    1
    1. Contributeur
      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. 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
    2. 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
      1. Contributeur
        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
        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
          1. Contributeur
            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. 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
          2. Contributeur
            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