Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/07/2018, à 10:53

Blackdruid

Exécuter un script .sh en pipant ls, grep et xargs

Salut,

Je voudrais réussir à enchaîner les commandes suivantes.

J'ai plusieurs scripts dans mon répertoire demo :

user@localhost: demo$ ls
script1.sh  script2.sh  script3.sh  script4.sh

Et il me faut lancer le script3.sh après un ls et un grep via un xargs :

user@localhost: demo$ ls | grep script3 | xargs bash -c
bash: script3.sh : commande introuvable

La commande est introuvable car mon répertoire demo n'est pas dans le PATH et il manque donc le "./" devant le nom du script pour que celui-ci soit trouvé et exécuté.

Quelqu'un saurait-il modifier cette commande pour qu'elle fonctionne ?

(C'est pour ma culture personnelle, je ne cherche pas de solutions de contournement j'en ai déjà big_smile)

Hors ligne

#2 Le 31/07/2018, à 11:31

bruno

Re : Exécuter un script .sh en pipant ls, grep et xargs

AMHA, ce n'est pas parce que ton script n'est pas dans le PATH, mais à cause de l'argument -c.

Quand tu fais cela ce qui est exécuté c'est :

bash -c script3.sh

ce qui provoque une erreur car ce devrait être :

bash script3.sh -c

Tu peux faire :

ls | grep script3 | xargs -I {} /bin/bash {} -c

Dernière modification par bruno (Le 31/07/2018, à 11:43)

Hors ligne

#3 Le 31/07/2018, à 11:38

pingouinux

Re : Exécuter un script .sh en pipant ls, grep et xargs

Bonjour,
Si tu tiens absolument à utiliser cet enchaînement bizarre :

ls | grep script3 | xargs bash

ou bien

ls -d ./* | grep script3 | xargs bash -c

Hors ligne

#4 Le 31/07/2018, à 11:42

bruno

Re : Exécuter un script .sh en pipant ls, grep et xargs

Oui mais :

ls -d ./* | grep script3 | xargs bash -c option

ne fonctionnera pas pour la raison invoquée plus haut.

N.B. :  je ne vois pas l’intérêt d'utiliser -c sans passer d'option…

Dernière modification par bruno (Le 31/07/2018, à 11:43)

Hors ligne

#5 Le 31/07/2018, à 11:45

Blackdruid

Re : Exécuter un script .sh en pipant ls, grep et xargs

Yes, bien vu ! En effet le -c est en trop (étonnant que je n'aie pas testé cette combinaison, pourtant simple).

Voilà ce que je voulais :

ls | grep script3 | xargs bash

Merci smile

Je trouve ça pratique quand on a plusieurs scripts avec des préfixes proches dans un même répertoire. Ça m'évite de mitrailler la touche [tab].

Dernière modification par Blackdruid (Le 31/07/2018, à 11:46)

Hors ligne

#6 Le 31/07/2018, à 12:14

pingouinux

Re : Exécuter un script .sh en pipant ls, grep et xargs

Blackdruid #5 a écrit :

Je trouve ça pratique quand on a plusieurs scripts avec des préfixes proches dans un même répertoire.

C'est un point de vue…
Ceci ferait la même chose

./script3*

Hors ligne

#7 Le 31/07/2018, à 12:20

Watael

Re : Exécuter un script .sh en pipant ls, grep et xargs

Ça m'évite de mitrailler la touche [tab].

pourtant, ça évite ce genre de commande foireuse.

+1 pingouinux, bien que manipuler des scripts à l'aveuglette... hmm


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne