Pour chaque ligne d'un fichier, exécuter un script

Résolu/Fermé
julessh Messages postés 26 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 23 juin 2015 - Modifié par mamiemando le 19/06/2015 à 14:23
julessh Messages postés 26 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 23 juin 2015 - 23 juin 2015 à 11:37
Bonjour tout le monde !

voila j'ai un petit soucis et oui encore je voudrais exécuter un script pour chaque lignes d'un fichier
le script ayant pour param le contenu de la ligne petit soucis le code bug le voici :

while read aLine ;do listeProgs[$i]="$aLine"; ((i++));
./ckclpl $aLine;
done < /jules/epurer.txt

je ne sais pas si vous voyez ce que j'essaye de faire si vous ne comprenez pas dites le moi :)

merci !
A voir également:

5 réponses

mamiemando Messages postés 33361 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 novembre 2024 7 799
Modifié par mamiemando le 19/06/2015 à 11:20
Bonjour,

... sauf qu'en bash ça ne s'écrit pas comme ça.
https://forums.commentcamarche.net/forum/affich-37620017-comment-lire-un-fichier-ligne-par-ligne#syntaxe

Du coup ce serait plus :

while read ligne  
do  
   ./ckclpl $ligne;   
done < /jules/epurer.txt 


Par ailleurs, attention aux chemins (c'est sans doute plutôt
/home/jules/epurer.txt
+ il vaut mieux éviter les chemins relatifs dans un script car le script ne marchera pas forcément en fonction du répertoire dans lequel tu es positionné pour le lancer).

Bonne chance
1
julessh Messages postés 26 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 23 juin 2015
19 juin 2015 à 11:44
cela ne marche pas je n ai pas mis le chemin réel car il contiens des noms de machines confidentiels :)

mais sinon le script ne marches pas (celui que tu as fait)
j ai bien évidement remplacé les chemins par les miens
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 620
19 juin 2015 à 13:27
hello
qu'est ce qui ne fonctionne pas ?
0
julessh Messages postés 26 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 23 juin 2015
19 juin 2015 à 13:48
il execute le script seulement pour la première ligne du fichier
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417 > julessh Messages postés 26 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 23 juin 2015
19 juin 2015 à 14:05
Salut,

Et est-ce que comme ça ça marche ?
while read ligne  
do  
   echo $ligne;   
done < /jules/epurer.txt

Si oui, il serait opportun de voir aussi le contenu du script
ckclpl
;-\
0
julessh Messages postés 26 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 23 juin 2015
19 juin 2015 à 14:08
ckclpl est un script contenant pas mal de lignes permettant d aller checker des choses sur des serveurs
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417 > julessh Messages postés 26 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 23 juin 2015
19 juin 2015 à 14:12
Merci de répondre d'abord à la 1ère question ;-\
0
mamiemando Messages postés 33361 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 novembre 2024 7 799
19 juin 2015 à 14:20
@julessh et zipe31 : Merci de répondre en bas de fil de discussion avec le bouton "répondre au sujet en bas de page" et non en commentaire, car sinon ça va devenir illisible.

@julessh : peut-être que ton shell est configuré (voir option -e) pour sortir dès qu'il y a une erreur, et que ton script, ne se termine pas avec le code de retour 0. Ça expliquerait pourquoi le script stoppe à la première itération.

Une manière de trancher serait de remplacer l'appel à ckclpl par echo comme suggéré ici :
https://forums.commentcamarche.net/forum/affich-32132518-pour-chaque-ligne-d-un-fichier-executer-un-script#6

@julessh : pense à répondre à zipe31 :-)
0
mamiemando Messages postés 33361 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 15 novembre 2024 7 799
Modifié par mamiemando le 19/06/2015 à 14:07
Je ne sais pas où tu t'es trompé mais a priori ça marche :-)

toto.txt

j'aime les tapirs
oh une mouette


toto.sh

#!/bin/sh

while read ligne  
do  
   echo "<$ligne>";   
done < $HOME/toto.txt 

exit 0


Test

(mando@aldur) (~) $ sh toto.sh 
<j'aime les tapirs>
<oh une mouette>


Bonne chance
0
dubcek Messages postés 18755 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 14 novembre 2024 5 620
19 juin 2015 à 15:39
mettre des " si il y a des espaces
./ckclpl "$aLine"
0

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

Posez votre question
julessh Messages postés 26 Date d'inscription jeudi 18 juin 2015 Statut Membre Dernière intervention 23 juin 2015
23 juin 2015 à 11:37
merci :) a tous finalement j'ai abandonné et je l ai fais avec un sed dans un autre fichier ;)
0