Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/10/2011, 18h38   #1
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 177
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 177
Points : 37
Points : 37
Par défaut unexpected end of file

Bonjour,
tout est dans le titre, j'ai un script ksh que j'execute sous windows via Cygwin, mais ça marche pas trop bien
Code :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
if [ ! $# -eq 3 ];
then
	echo $0 user password instance
	exit 1
fi
ret=0
 
printf "Chargement Cpta generique sur  %s\n" $3
 
timestamp=_`date +%Y%m%d_%H%M`
logFile=$(dirname $0)/../log/param_generique$timestamp.log
printf "preload_param_generique....."
sqlplus -s $1/$2@$3 @../sql/preload_param_generique.sql >> $logFile 2>&1 
ret=$(($ret+$?))
if [[ ret -ne 0 ]] ; 
then 
 	echo " !! Erreur !!"
	exit 1
else 
 	echo " OK"
fi
 
./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC
ret=$(expr $ret + $?)
[[ ret -ne 0 ]] &&  exit 1
./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_LAC
ret=$(expr $ret + $?)
[[ ret -ne 0 ]] -x &&  exit 1
./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_PARAM
ret=$(expr $ret + $?)
[[ ret -ne 0 ]] &&  exit 1
./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_LAC_PARAM
ret=$(expr $ret + $?)
[[ ret -ne 0 ]] &&  exit 1
./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_FCTE_CPT
ret=$(expr $ret + $?)
[[ ret -ne 0 ]] &&  exit 1
 
printf "postload_param_generique....."
sqlplus -s $1/$2@$3 @../sql/postload_param_generique.sql >> $logFile 2>&1 
ret=$(expr $ret + $?)
if [[ ret -ne 0 ]] ; 
then 
 	echo " !! Erreur !!"
	exit 1
else 
 	echo " OK"
fi
exit $ret
merci de votre aide.
passion_info est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 03h39   #2
Expert Confirmé Sénior
 
Avatar de N_BaH
 
Inscription : février 2008
Messages : 2 071
Détails du profil
Informations forums :
Inscription : février 2008
Messages : 2 071
Points : 4 154
Points : 4 154
Bonjour,

as-tu tenté d'écrire et d'exécuter un script tout bête, de la même manière que celui-ci ?
je pense à une différence d'encodage entre Windows et cygwin
...
?
N_BaH est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/10/2011, 10h53   #3
Membre confirmé
 
Avatar de Mandraxx
 
Homme
Architecte de système d'information
Inscription : mai 2011
Messages : 133
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France, Gers (Midi Pyrénées)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Conseil

Informations forums :
Inscription : mai 2011
Messages : 133
Points : 264
Points : 264
Bonjour,

Quel éditeur utilises-tu ?

Certains éditeurs Windows ont la fâcheuse habitude de supprimer la dernière ligne du fichier texte. Or, il se trouve que KSH désire ardemment que la ligne 50 dans ton listing soit présente et vide...

@+
__________________
Le choix motivé par le seul argument de modernité est intrinsèquement dépourvu de créativité.
Mandraxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 12h24   #4
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 177
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 177
Points : 37
Points : 37
merci de vos réponses.
- oui tout a fait, j'ai déjà tester des script qui s’exécute correctement sous Windows, d'ailleurs c'est la première chose à laquelle j'ai pensé.
- pour l’éditeur , j'utilise l’éditeur standard d'Eclipse et pour être sûr que la dernière ligne n'est pas supprimée, j'ai édité le script avec UltraEdit, et ça à l'air de bien figurer.
j'avoue que je sèche !!!!
passion_info est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 13h13   #5
Membre Expert
 
Avatar de jabbounet
 
frederic frances
Inscription : juin 2009
Messages : 1 703
Détails du profil
Informations personnelles :
Nom : frederic frances
Âge : 36

Informations forums :
Inscription : juin 2009
Messages : 1 703
Points : 2 115
Points : 2 115
Citation:
Envoyé par passion_info Voir le message
Bonjour,
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
...
ret=0
...
ret=$(($ret+$?))
if [[ ret -ne 0 ]] ; 
then 
 	echo " !! Erreur !!"
	exit 1
else 
 	echo " OK"
fi
...
ret=$(expr $ret + $?)
[[ ret -ne 0 ]] &&  exit 1
...
pourquoi utiliser ret il est censé rester a 0 si tout vas bien et tu sors dès que le statut de retour $? est différent de 0.
en plust en dehors des affectation cela devrais être $ret.

plus simple serait de s'en passer.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
...
#ret=0
...
#ret=$(($ret+$?))
if [[ $? -ne 0 ]] ; 
then 
 	echo " !! Erreur !!"
	exit 1
else 
 	echo " OK"
fi
...
#ret=$(expr $ret + $?)
[[ $? -ne 0 ]] &&  exit 1
...
__________________
BAZAR est un joyeux bordel improvisé ! Tous les mardis.
http://www.improetcompagnie.com/publ...ctacles-6.html

Citation:
Envoyé par Isaac Asimov
Pour réussir, il ne suffit pas de prévoir. Il faut aussi savoir improviser
Pour les utilisateurs d'emacs:
http://www.emacswiki.org/

Attends de voir ce qui vas sortir de:
http://www.pushmid.com
jabbounet est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 23/10/2011, 18h59   #6
Membre du Club
 
Avatar de aysheaia
 
E L
Inscription : juin 2011
Messages : 19
Détails du profil
Informations personnelles :
Nom : E L
Localisation : France

Informations forums :
Inscription : juin 2011
Messages : 19
Points : 62
Points : 62
Ligne 28, il y a un -x en trop après ]]:
Citation:
Envoyé par passion_info Voir le message
Code :
1
2
3
4
5
 
[...]
[[ ret -ne 0 ]] -x &&  exit 1
./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_PARAM
ret=$(expr $ret + $?)
Peut-être la cause du problème
aysheaia est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/10/2011, 13h56   #7
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 177
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 177
Points : 37
Points : 37
bonjour et merci de la réponse,
aysheaia en effet, c'est erreur bloquante mais ça ne résout pas mon pb, je continue à avoir la même erreur.
passion_info est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 15h03   #8
Membre confirmé
 
Avatar de Mandraxx
 
Homme
Architecte de système d'information
Inscription : mai 2011
Messages : 133
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 33
Localisation : France, Gers (Midi Pyrénées)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Conseil

Informations forums :
Inscription : mai 2011
Messages : 133
Points : 264
Points : 264
Hum, dans ce cas as-tu vérifié l'encodage ?

Sous environnement UNIX, on a des erreurs dès lors que le fichier texte est en format DOS, exemple tout bête :
Code :
1
2
3
#!/bin/sh
echo "Yes !"
exit 0
Comme tu peux le voir, l'encodage est très important :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
[mandraxx@gaia ~]$ file bidon
bidon: ASCII text
[mandraxx@gaia ~]$ ./bidon
It works !
[mandraxx@gaia ~]$ unix2dos bidon
unix2dos: converting file bidon to DOS format ...
[mandraxx@gaia ~]$ file bidon
bidon: ASCII text, with CRLF line terminators
[mandraxx@gaia ~]$ ./bidon
It works !
: numeric argument required
[mandraxx@gaia ~]$
On voit clairement une erreur à la ligne 11 qui n'est pas bloquante ici car le script est simple mais qui peut tout faire partir en vrille si l'algorithme est plus complexe.

Après, je ne sais pas ce qui est préconisé pour les scripts sous Cygwin...

@+
__________________
Le choix motivé par le seul argument de modernité est intrinsèquement dépourvu de créativité.
Mandraxx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 15h24   #9
Membre confirmé
 
Inscription : avril 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 188
Points : 222
Points : 222
Citation:
Envoyé par passion_info Voir le message
Bonjour,
tout est dans le titre, j'ai un script ksh que j'execute sous windows via Cygwin, mais ça marche pas trop bien
Code :
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
if [ ! $# -eq 3 ];
then
	echo $0 user password instance
	exit 1
fi
ret=0
 
printf "Chargement Cpta generique sur  %s\n" $3
 
timestamp=_`date +%Y%m%d_%H%M`
logFile=$(dirname $0)/../log/param_generique$timestamp.log
printf "preload_param_generique....."
sqlplus -s $1/$2@$3 @../sql/preload_param_generique.sql >> $logFile 2>&1 
ret=$(($ret+$?))
if [[ ret -ne 0 ]] ; 
then 
 	echo " !! Erreur !!"
	exit 1
else 
 	echo " OK"
fi
 
./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC
ret=$(expr $ret + $?)
[[ ret -ne 0 ]] &&  exit 1
./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_LAC
ret=$(expr $ret + $?)
[[ ret -ne 0 ]] -x &&  exit 1
./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_PARAM
ret=$(expr $ret + $?)
[[ ret -ne 0 ]] &&  exit 1
./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_SC_LAC_PARAM
ret=$(expr $ret + $?)
[[ ret -ne 0 ]] &&  exit 1
./csv_loader.ksh -x $1 $2 $3  ../cpta/TPE_FCTE_CPT
ret=$(expr $ret + $?)
[[ ret -ne 0 ]] &&  exit 1
 
printf "postload_param_generique....."
sqlplus -s $1/$2@$3 @../sql/postload_param_generique.sql >> $logFile 2>&1 
ret=$(expr $ret + $?)
if [[ ret -ne 0 ]] ; 
then 
 	echo " !! Erreur !!"
	exit 1
else 
 	echo " OK"
fi
exit $ret
merci de votre aide.
Euh... est-ce qu'on ne devrait pas avoir "[[ $ret -ne 0 ]]" à la place de "[[ ret -ne 0 ]]" ?
HTH
)jack(
jack-ft est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 11h16   #10
Nouveau Membre du Club
 
Inscription : février 2005
Messages : 177
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 177
Points : 37
Points : 37
bonjour.
problème résolu, on a réécrit le script et a priori c'était une erreur d'encodage.
merci et bonne journée.
passion_info est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 11h39   #11
Membre actif
 
Homme
Inscription : août 2011
Messages : 44
Détails du profil
Informations personnelles :
Sexe : Homme

Informations forums :
Inscription : août 2011
Messages : 44
Points : 153
Points : 153
Citation:
Envoyé par passion_info Voir le message
bonjour.
problème résolu, on a réécrit le script et a priori c'était une erreur d'encodage.
merci et bonne journée.
pour moi jack-ft avait mis le doigt sur un bug : [[ ret -ne 0 ]]
ret ne fait pas référence à la valeur de la variable ret mais à la valeur "ret"

par ailleurs, je n'ai pas vu de shebang dans ton script, est-ce normal ? ce n'est pas gênant en soit si le shell par défaut est le même que celui utilisé dans ton script.

chardclo est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h43.


 
 
 
 
Partenaires

Hébergement Web