J'utilise AIX
Et quand je lance le script sh, il ne se passe rien. J'ai attendu un peu plus d'une minute et j'ai fait ^c.
Voilà ce que j'entend par bouclé
J'utilise AIX
Et quand je lance le script sh, il ne se passe rien. J'ai attendu un peu plus d'une minute et j'ai fait ^c.
Voilà ce que j'entend par bouclé
Il ne boucle donc pas, il ne fait rien. C'est à dire qu'il attend une entrée au clavier vu que tu ne lui passes pas de fichier à traiter.
Corrige ton script comme je l'ai indiqué dans mon post précédent.
J'ai apporté les modifs suivantes :
et j'ai maintenant l'erreur suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 for file in test.pc do cp $test.pc $test.org awk ' /#include <gestimpr.h>/ { print $0 print "#include <userprog.h>" next } /EXEC SQL INCLUDE sqlca.h;/ { print $0 print "EXEC SQL INCLUDE bmtmain.h;" next } /char TcSortie[80];/ { print $0 print "char lib_err1[2000];" next } /EXEC SQL BEGIN DECLARE SECTION;/ { print $0 print "VARCHAR sessionid[21]," print "lib-err[2000]," print "paragraphe_err[80];" print "int cd_ret;" next } { print $0 } ' $file.org > $file done
imprÚvu.wk.sh: 0403-057 Erreur de syntaxe. ligne 3 : `do
Bonjour,
Quel shell utilises-tu ? Est-ce que ce shell comporte une instruction for qui s'écrit comme tu le fais ?
Par ailleurs, tu as un problème au début de ton script :
Ta variable n'est pas $test.pc, mais $file
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 for file in test.pc do cp $test.pc $test.org
En fait j'ai repris tout le code
Je le réexecute mais j'ai toujours la même erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 for file in test.pc do cp $file $file.org awk ' /#include <gestimpr.h>/ { print $0 getline if ($0 != "#include <userprog.h>") { print "#include <userprog.h>" } print $0 next } /EXEC SQL INCLUDE sqlca.h;/ { print $0 getline if ($0 != "EXEC SQL INCLUDE bmtmain.h;") { print "EXEC SQL INCLUDE bmtmain.h;" } print $0 next } { print $0 } ' $file.org > $file done
Rajoute
au début de ton script et relance le.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#!/bin/ksh
J'ai rajouté la ligne au début de mon script comme tu me l'as soumis, le programme fonctionne, mais il me rajoute #include <userprog.h> après chaque ligne. En plus j'ai toujours ^M qui s'affiche en début et à la fin de chaque ligne du programme.
Là je sais plus quoi faire.
Il y a beaucoup de choses inutiles ou en double dans ce que tu as testé.
Essaye ça, ce qui est sensiblement la même chose que ce que je t'ai déjà proposé:
Pour ce qui concerne les ^M, le problème est ailleurs.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 for file in test.pc do cp $file $file.org awk ' /#include <gestimpr.h>/ { print $0 print "#include <userprog.h>" next } /EXEC SQL INCLUDE sqlca.h;/ { print $0 print "EXEC SQL INCLUDE bmtmain.h;" next } { print $0 } ' $file.org > $file done
les ^M signifient que ton script est au format DOS au lieu du format UNIX.
C'est sans doute la raison des "syntax error"
Solutions pour éliminer les ^M :
ou
Code : Sélectionner tout - Visualiser dans une fenêtre à part dos2unix nom_de_fichier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 tr -d '\r' < nom_de_fichier > tmp mv tmp nom_de_fichier
Merci les gars, ça fonctionne.
Le truc c'est que j'ai pas trop compris la résolution de ^M
Je retravaille dessus
Les fichiers originaux viennent-ils d'une machine sous Windows ? Si oui, comment les transfères-tu ?
Pour régler le problème, tu peux inclure le tr au script:
Remplace la ligne:
} ' $file.org > $file
par
} ' $file.org | tr -d '\r' > $file
Je rédige mes scripts avec notepad++ et je les transfert par FTP avec Filezilla.
Merci mille fois, car tout est rentré dans l'ordre. Le fait d'insérer la modif de ton dernier message m'a enlevé tous les ^M.
J'ai fait évoluer mon script avec d'autres modif, et ça tourne très bien. J'ai mes insertions là où il faut et plus de ^M.
Merci encore
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager