Executer des commandes en provenance d'une liste [Shell] - Shell/Batch - Programmation
Marsh Posté le 23-09-2014 à 13:59:24
L'erreur est ultra classique. Je l'ai vue un million de fois.
Pour lire un fichier ligne à ligne, il ne faut jamais faire : for trait in $(cat test.com)
En effet in ne s'arrête pas seulement à la fin d'une ligne, mais aussi quand il voit un espace.
Donc, cela ne peut marcher que dans le cas où une ligne ne contient qu'un seul mot.
La solution consiste à faire : cat test.com | while read trait
Marsh Posté le 25-09-2014 à 07:00:07
effectivement, j'y pense jamais a cette alternative.
Trop l'habitude de traiter des listes simple.
Merci
Marsh Posté le 26-09-2014 à 11:32:59
Tu peux aussi changer la variable IFS avant le for ... in et le restaurer ensuite
Code :
|
Marsh Posté le 27-09-2014 à 06:40:28
l'IFS j'evite d'y toucher, uen fois en le modifiant pour des test ca a fait tomber des script en prod, donc bon, j'evite.
Marsh Posté le 23-09-2014 à 12:48:15
Bonjour
Pour simplifier des demandes, j'essaie de créée un script, qui prend en paramètre un fichier, contenant une liste de commande a executer.
J'arrive a lire le fichier, ligne par ligne, sans soucis.
Par contre, je n'arrive pas a faire comprendre a mon script, que les lignes, sont des commades a lancés.
a chaque fois j'ai des erreur de paramètre pas reconu, ou des erreur not found.
exemple tout bete, avec un fichier qui contient des echo:
quand je fais la boucle suivante :
J'ai ces erreurs :
La c'etait pour l'exemple, mais en réalité les commandes sont des shell avec des paramètres
j'ai essayer avec `$trait`ou $($trait), ca n'a pas changer grand chose (à part les erreurs)
Comment faire comprendre à mon script que ce sont des commandes, avec des paramètres, a executé ?
---------------
Serveur HFR - OpenTTD