OVH Cloud OVH Cloud

shell script qui lit dans un fichier

5 réponses
Avatar
souliane
Bonjour,

je voudrai faire un petit script bash qui a execute une commande
plusieurs fois de suite, apres avoir recuperer les arguments de la
commande dans un fichier texte...

Si on ne veut qu'un seul argument on fait par exemple :

for X in `awk '{print $1}' fichier`;
do
`commande $X`
done


Mais si je veux deux arguments, comment faire ? Le fichier est fait
comme ca :

arg11 arg12
arg21 arg22
arg31 arg32

et je veux lancer commande arg11 arg12, puis commande arg21 arg22 etc...

5 réponses

Avatar
no_spam
On Wed, 29 Dec 2004 01:43:48 +0100, souliane wrote:

Bonjour,

je voudrai faire un petit script bash qui a execute une commande
plusieurs fois de suite, apres avoir recuperer les arguments de la
commande dans un fichier texte...

Si on ne veut qu'un seul argument on fait par exemple :

for X in `a ' fichier`;
do
`commande $X`
done


Mais si je veux deux arguments, comment faire ? Le fichier est fait
comme ca :

arg11 arg12
arg21 arg22
arg31 arg32

et je veux lancer commande arg11 arg12, puis commande arg21 arg22 etc...


La même chose, en remplaçant awk '{print $1}' par awk '{print $0}' ...

Avatar
David LE BOURGEOIS
Bonjour,

je voudrai faire un petit script bash qui a execute une commande
plusieurs fois de suite, apres avoir recuperer les arguments de la
commande dans un fichier texte...

Si on ne veut qu'un seul argument on fait par exemple :

for X in `awk '{print $1}' fichier`;
do
`commande $X`
done



Pourquoi ne pas utiliser la fonction system() de awk ?

awk '{ system("commande " $1) }' fichier


Mais si je veux deux arguments, comment faire ? Le fichier est fait
comme ca :

arg11 arg12
arg21 arg22
arg31 arg32

et je veux lancer commande arg11 arg12, puis commande arg21 arg22 etc...


Sur le même principe :

awk '{ system("commande " $1 " " $2) }' fichier

Ou bien avec xargs :

xargs -n2 commande < fichier

--
David LE BOURGEOIS

Avatar
SoULiAne
Merci pour vos réponses, j'ai eu des problemes avec mon serveur mail je
n'ai pas pu vous répondre avant mais je tenais à vous remercier et à
vous dire que c'est bon :)
Avatar
Jean-Julien Claudon
souliane wrote:
je voudrai faire un petit script bash qui a execute une commande
plusieurs fois de suite, apres avoir recuperer les arguments de la
commande dans un fichier texte...
[...]
Mais si je veux deux arguments, comment faire ? Le fichier est fait
comme ca :

arg11 arg12
arg21 arg22
arg31 arg32

et je veux lancer commande arg11 arg12, puis commande arg21 arg22 etc...


une possibilité:
$ cat fichiers_arguments|sed /^/commande /|sh

ou s'il y a besoin d'isoler explicitement les deux premiers mots séparés par
des espaces ou tabulations de chaque ligne:
$ cat fichier_arguments|sed -e "s/^[ t]*//" -e "s/[ t]+/ /g"|cut -d" "
-f1-2|sed -e "s/^/commande /"|sh

Jean.

Avatar
Nicolas George
souliane wrote in message <cqt5lj$ju$:
J'ai du rajouter le echo et mettre entre `` la commande a lancer, sinon
il n'attendait pas la fin de l'execution de ./autre_script pour
continuer la boucle...


Gnî ? La méthode normale, c'est simplement

./autre_script "$x" "$y"

sans echo ni backquotes. Si quelque chose part en arrière plan, c'est qu'il
y a un bug dans autre_script.