![]() |
| Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé. | |||||||
|
|||||||
| Shell Vos questions sur l'utilisation des commandes shell |
![]() |
|
|
Outils de la discussion |
|
|
#1 (permalink) |
|
Candidat au titre de Membre du Club
![]() Date d'inscription: mars 2007
Âge: 20
Messages: 24
|
Bonjour,
Je suis amené à manipuler un fichier KSH, malgré le fait que je n'aie reçu aucune formation dans ce domaine, peut-être quelqu'un pourrait m'aider? Un spool me crée un fichier texte comme suit: *debut de mon fichier texte* CHAINE 1 CHAINE 2 CHAINE 3 *fin de mon fichier texte* Les deux dernières lignes du fichiers sont complètement vides (pas d'espaces ni de tab), il s'agit juste de retours chariots. Ensuite je fais un read de ce fichier, et selon la valeur de la ligne (j'utilise des if) je lance divers traitements. Sauf que lorsque il arrive à la ligne vide, j'ai ce message d'erreur: /batch/mon.ksh[120]: test: 0403-004 Specify a parameter with this command. J'ai pensé utiliser sed ou awk pour supprimer ces lignes, en vain. Voilà mon code: Code :
sqlplus -s ${USRORA} << EOF >> ${sqlreport} @$REP_SQL/mon.sql $monfichiertexte
EOF
while read script
do
if [ $script = "CHAINE 1" ]
then
#MON TRAITEMENT ICI
fi
done < $monfichiertexte
|
|
|
|
|
|
#2 (permalink) |
|
Membre éprouvé
![]() Date d'inscription: février 2007
Messages: 451
|
teste si la ligne n'est pas vide avant de tester l'egalité avec la chaine
en bash ca serait Code :
if [ -n $script ]
then
suite du traitement avec les autres tests
__________________
La science est ce que nous comprenons suffisamment bien pour l'expliquer à un ordinateur. L'art, c'est tout ce que nous faisons d'autre. Donald E. Knuth |
|
|
|
|
|
#3 (permalink) |
|
Candidat au titre de Membre du Club
![]() Date d'inscription: mars 2007
Âge: 20
Messages: 24
|
En mettant le if, j'ai la même erreur. Sauf qu'au lieu de l'avoir n fois (n tests sur la valeur de script), je l'ai une seule fois...
Quant au nom de la variable, je suis totalement d'accord avec toi: ceux qui ont développé ce ksh étaient des boulets, et maintenant qu'ils ont quitté mon projet, je dois faire avec :s PI, script est un nom de table. Dernière modification par SmileAndFly ; 31/07/2008 à 16h55 |
|
|
|
|
|
#4 (permalink) |
|
Membre éprouvé
![]() Date d'inscription: mars 2007
Localisation: Toulouse
Messages: 471
|
Entourer $script de double-quotes doit régler le problème.
En présence de ligne vide, sans ces double-quotes, le shell lit : Code :
if [ = "CHAINE 1" ] Code :
if [ "" = "CHAINE 1" ] Code :
if [ "$script" = "CHAINE 1" ]
then
#MON TRAITEMENT ICI
fi
__________________
Loi de Murphy: La Théorie c'est quand ça ne marche pas mais que l'on sait pourquoi. La Pratique c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique ça ne marche pas et on ne sait pas pourquoi. |
|
|
|
![]() |
![]() |
||
KSH: Supprimer des lignes vides (sans espaces ni tab) en fin de fichier text
|
||
| Outils de la discussion | |
|
|