Bonjour, est ce que quelqu'un pourrait m'expliquer cette commande?
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 charger_fichier.sh fichier %s || exit 1
Bonjour, est ce que quelqu'un pourrait m'expliquer cette commande?
merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 charger_fichier.sh fichier %s || exit 1
On lance le script "charger_fichier.sh", en lui précisant les paramètres "fichier" et "%s".Envoyé par claralavraie
En cas d'échec du script appelé, on sort du script en cours avec un code d'erreur à 1.
Le pendant de || mais pour le succès de l'exécution du script appelé est &&.
OK je comprends mieux:
donc voici la commande globaleDonc si je comprends bien cette commande, on liste les fihiers_*.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ls -latr fichier_* | awk ' {cmd=sprintf("charger_fichier.sh fichier %s || exit 1",substr($9,9,11)); system(cmd);}
A chaque fichier trouvé, on lance charger_fichier.sh avec en paremètre fichier et %s.
Par contre je ne sais pas comment on obtient le %s.
est ce le substr?
Avec toute la commande, c'est autre chose !!!Envoyé par claralavraie
(par ailleurs, il manque la simple quote de terminaison du script awk)
Dans le cas présent, il est fait une liste de fichiers, au moyen du ls.
Tous ces noms de fichiers, en "fichier_*" sont envoyés à un script awk.
Le script awk, pour chaque ligne de la liste de fichiers passés va construire une variable (chaine de caractères) à coup de sprintf.
Cette chaine de caractères contiendra "charger_fichier.sh fichier XXXXXX || exit 1" où XXXXXX sera remplacé par les caractères 9 à 11 du 9e champ de la ligne en cours de traitement de la liste de fichiers.
Ensuite, le script awk lance, au niveau système, la commande constituée par cette chaine stockée dans la variable cmd.
Le %s est un des paramètres de format du sprintf. Il indique qu'il faut placer, ici, une chaine qui se trouve dans les paramètres à suivre.
P.S. Il y avait probablement moyen de tout faire en shell, sans invoquer awk pour ça.![]()
ah bon?
et comment peut on faire ça?
Attention, non testé, mais quelquechose comme ceci ne doit pas être loin de la solution :Attention, le premier des caractères après le - du ls est un chiffre 1, pas la lettre l.
Code : Sélectionner tout - Visualiser dans une fenêtre à part for nom in $(ls -1art fichier_*); do ( charger_fichier.sh fichier ${nom:9:11} || exit 1 ) ; done
Partager