Probleme avec une boucle if en Cshell

Fermé
nulle00 Messages postés 21 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 8 juillet 2008 - 22 juin 2008 à 11:28
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 - 22 juin 2008 à 16:19
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!!

7 réponses

dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
22 juin 2008 à 11:55
est ce que
source fonction1 $a per-genre
fonctionne manuellement ?

echo "aa\nbb" pour un saut de ligne

faire chmod u+x fichier
1
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
22 juin 2008 à 13:37
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
nulle00 Messages postés 21 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 8 juillet 2008 1
22 juin 2008 à 13:56
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
nulle00 Messages postés 21 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 8 juillet 2008 1
22 juin 2008 à 12:13
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
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
22 juin 2008 à 12:28
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nulle00 Messages postés 21 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 8 juillet 2008 1
22 juin 2008 à 13:13
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
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
22 juin 2008 à 14:50
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
nulle00 Messages postés 21 Date d'inscription dimanche 15 juin 2008 Statut Membre Dernière intervention 8 juillet 2008 1
22 juin 2008 à 15:08
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
dubcek Messages postés 18744 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 4 septembre 2024 5 617
22 juin 2008 à 16:19
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